Найти - Пользователи
Полная версия: Подключение модуля
Начало » Python для новичков » Подключение модуля
1
Vincent
Есть программа с графическим интерфейсом. Есть несколько радиобаттонов и чекбоксов, а так же модули, подключающиеся при определенных условиях.
Радио отвечают за подключение тех или иных модулей и их печать, чекбоксы, за печать текста в определенных местах страницы, а так же возможность отключения его (работаю с pdf).

Пример:
if self.ui.radio105x99.isChecked():
setka105x99.set105x99(Name=“2222”, Company=“2222”, Index=“2222”, Address=“11111”, Tel=“11111”)
if self.ui.checkBox_1.isChecked():
setka105x99.set105x99(Name11=Name,Address11=Address)
if self.ui.checkBox_2.isChecked():
setka105x99.set105x99(Name12=Name,Address12=Address)
А так же чать кода в отдельном модуле:
def set105x99(Name12=“”,Company12=“”,Address12=“”,Index12=“”,Tel12=“”,Name11=“”,Company11=“”,Address11=“”,Index11=“”,Tel11=“”,FileName=“Test.pdf”,Name=“”,Company=“”,Index=“”,Address=“”,Tel=“”):
MyFontObject = ttfonts.TTFont('Arial', ‘arial.ttf’)
pdfmetrics.registerFont(MyFontObject)
MyCanvas = canvas.Canvas(FileName)
MyCanvas.setFont(“Arial”, font)

MyCanvas.drawString(1*mm, 270*mm, Name11)
MyCanvas.drawString(1*mm, 260*mm, Company11)
MyCanvas.drawString(1*mm, 250*mm, Index11)
MyCanvas.drawString(1*mm, 240*mm, Address11)
MyCanvas.drawString(1*mm, 230*mm, Tel11)

MyCanvas.drawString(106*mm, 270*mm, Name12)
MyCanvas.drawString(106*mm, 260*mm, Company12)
MyCanvas.drawString(106*mm, 250*mm, Index12)
MyCanvas.drawString(106*mm, 240*mm, Address12)
MyCanvas.drawString(106*mm, 230*mm, Tel12)

MyCanvas.save()
А теперь сама проблема. При подобном построении кода текст присваивается лишь через один чекбокс, а именно тот, который в самом коде стоит последним. Пытался подключать и через отдельные функции def, та же история. Сохранять все в один документ питон определенно не хочет.
Помогите разобраться с проблемой, либо предложить более рациональынй метод решения.
bw
1. Что за подключающиеся модули из кода я так и не понял.
2. Что за фреймворк используется.

Ты уверен, что Canvas открывает документ на редактировние (чтение/запись) и при выполнении save тупо не переписывает все данные что в нем уже хранились?

Почему не написать так:
MyCanvas = canvas.Canvas(FileName)

setka105x99.set105x99(MyCanvas, Name="2222", Company="2222", Index="2222", Address="11111", Tel="11111")

if self.ui.checkBox_1.isChecked():
setka105x99.set105x99(MyCanvas, Name11=Name,Address11=Address)

if self.ui.checkBox_2.isChecked():
setka105x99.set105x99(MyCanvas, Name12=Name,Address12=Address)

MyCanvas.save()
С соотв. изменениями set105x99, разумеется.

> MyCanvas.setFont(“Arial”, font)
Чё за font?

p.s. Шрифт - говно :-).

..bw
Vincent
Не вышло… делаю как вы сказали.

Обьявляю переменные, затем:
MyCanvas = canvas.Canvas(FileName)

if self.ui.radio105x99.isChecked():
setka105x99.set105x99()
if self.ui.checkBox_1.isChecked():
setka105x99.set105x99(Name11=Name,Address11=Address)
if self.ui.checkBox_2.isChecked():
setka105x99.set105x99(Name12=Name,Address12=Address)

MyCanvas.save()
В подключаемом файле следущее:
def set105x99(Name=“”,Company=“”,Index=“”,Address=“”,Tel=“”,FileName=“Test.pdf”, Name11=“”,Company11=“”,Index11=“”,Address11=“”,Tel11=“”, Name12=“”,Company12=“”,Index12=“”,Address12=“”,Tel12=“”):

MyFontObject = ttfonts.TTFont('Arial', ‘arial.ttf’)
pdfmetrics.registerFont(MyFontObject)
MyCanvas = canvas.Canvas(FileName)

font=10
lineLen = len(Address)
if lineLen > 42:
font = 8

MyCanvas.setFont(“Arial”, font)

MyCanvas.drawString(1*mm, 270*mm, Name11)
MyCanvas.drawString(1*mm, 260*mm, Company11)
MyCanvas.drawString(1*mm, 250*mm, Index11)
MyCanvas.drawString(1*mm, 240*mm, Address11)
MyCanvas.drawString(1*mm, 230*mm, Tel11)

MyCanvas.drawString(106*mm, 270*mm, Name12)
MyCanvas.drawString(106*mm, 260*mm, Company12)
MyCanvas.drawString(106*mm, 250*mm, Index12)
MyCanvas.drawString(106*mm, 240*mm, Address12)
MyCanvas.drawString(106*mm, 230*mm, Tel12)
Пдф страница не создается вообще.
bw
Я не так сказал.
Дальше напрягаем мозг самостоятельно.

..bw
Vincent
Пардон, был не внимателен )
Если кому понадобиться, выложу правильный вариант:
*Объявляем переменные*
if self.ui.radio105x99.isChecked():
MyFontObject = ttfonts.TTFont('Arial', ‘arial.ttf’)
pdfmetrics.registerFont(MyFontObject)
MyCanvas = canvas.Canvas(FileName)
font=10
lineLen = len(Address)
if lineLen > 42:
font = 8
MyCanvas.setFont(“Arial”, font)

setka105x99.set105x99(MyCanvas)
if self.ui.checkBox_1.isChecked():
setka105x99.set105x99(MyCanvas,Name11=Name,Address11=Address)
if self.ui.checkBox_2.isChecked():
setka105x99.set105x99(MyCanvas,Name12=Name,Address12=Address)
MyCanvas.save()
Подключаемый файл:
def set105x99(MyCanvas, FileName=“Test.pdf”, Name=“”,Company=“”,Index=“”,Address=“”,Tel=“”, Name11=“”,Company11=“”,Index11=“”,Address11=“”,Tel11=“”, Name12=“”,Company12=“”,Index12=“”,Address12=“”,Tel12=“”):

MyCanvas.drawString(1*mm, 270*mm, Name11)
MyCanvas.drawString(1*mm, 260*mm, Company11)
MyCanvas.drawString(1*mm, 250*mm, Index11)
MyCanvas.drawString(1*mm, 240*mm, Address11)
MyCanvas.drawString(1*mm, 230*mm, Tel11)

MyCanvas.drawString(106*mm, 270*mm, Name12)
MyCanvas.drawString(106*mm, 260*mm, Company12)
MyCanvas.drawString(106*mm, 250*mm, Index12)
MyCanvas.drawString(106*mm, 240*mm, Address12)
MyCanvas.drawString(106*mm, 230*mm, Tel12)
bw
MyCanvas.save() забыл.

p.s. Надеюсь осознал свою ошибку? И смени тему на более соотв. проблеме.

..bw
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB