Форум сайта python.su
Есть программа с графическим интерфейсом. Есть несколько радиобаттонов и чекбоксов, а так же модули, подключающиеся при определенных условиях.
Радио отвечают за подключение тех или иных модулей и их печать, чекбоксы, за печать текста в определенных местах страницы, а так же возможность отключения его (работаю с 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, та же история. Сохранять все в один документ питон определенно не хочет.
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()
Офлайн
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()
Отредактировано (Июнь 20, 2009 12:27:24)
Офлайн
Не вышло… делаю как вы сказали.
Обьявляю переменные, затем:В подключаемом файле следущее:
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
Офлайн
Пардон, был не внимателен )
Если кому понадобиться, выложу правильный вариант:
*Объявляем переменные*Подключаемый файл:
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)
Отредактировано (Июнь 21, 2009 18:41:04)
Офлайн
MyCanvas.save() забыл.
p.s. Надеюсь осознал свою ошибку? И смени тему на более соотв. проблеме.
..bw
Отредактировано (Июнь 20, 2009 20:18:08)
Офлайн