Форум сайта python.su
Суть - мини программа для проверки баланса на интернете. Интерфейс на ткинтере. Кнопка проверить баланс, надпись в которую выводится баланс и кнопка закрыть. Но - надписи на кнопках по сравнению с размерами кнопок крайне малы. Как сделать сами надписи побольше, ибо текущий вариант это максимум что влезло в экран ( ноут 14 дюймов)?
Может нужно использовать другие виджеты?
Также приветствуются любые другие советы по поводу данной программы.
Вот код
#!/usr/bin/env python # -*- coding: utf-8 -*- # у лутца написано что в случае с ткинтером импорт всего это нормально. Да и в данном случае это не играет роли from Tkinter import * # для закрытия приложения импортируем пакет ниже, если есть что то другое - с радостью буду # использовать его import sys # будем использовать регулярки дабы выцеплять текст из ответа import re # Задание переменных для оконного интерфейса root = Tk() # переменная для отображения изменяющейся надписи значения баланса BALANCE = StringVar(value='Неизвестен баланс') # инициализация и создание кнопок # шрифт - без разницы какой, его размер и размеры виджетов - максимум что вместилось btn = Button( root, text="Проверить баланс", width=35, height=15, font='arial 18') lbl = Label(root, textvariable=BALANCE, width=35, height=15, font='arial 18') btn1 = Button(root, text="Закрыть", width=35, height=15, font='arial 18') def from_string(): """ тестовый метод, возвращает строку в которой есть нужный нам баланс """ stri = """ <div style='background:#fafafa; border: dotted 1px #555; padding:30px'> <center> <br> <div style="font-size:16px;float:right;padding-bottom:5px;"><img style="width:16px" src="/data/img/liber/coins.png"> Актуальный баланс: <b>35 953, руб.</b></div> <table border="1" cellspacing="2" cellpadding="2" class="content"> <tr> <td align="left" style="background-color: #eeeeee; font-weight: bold;">Абонент</td> """ return stri def balance(page=from_string()): """ функция проверки баланса, возвращает его строковое значение """ # стараемся использовать только юникод. # получаем тело ответа для вытягивания оттуда суммы баланса bod = page.decode('utf-8') # патерн для регулярного выражения. сделан согласно исходникому коду # страницы pat = ur'баланс: <b>([\d\s\,]*)руб\.</b>' # обрезаем строку дабы избавится от лишних символов return ''.join([x if x.isdigit() else '' for x in re.findall(pat, bod)[0]]) def wind_run(): """ Запуск оконного варианта программы """ # назначение действий btn.bind("<Button-1>", lambda x: BALANCE.set(balance())) btn1.bind("<Button-1>", lambda x: sys.exit()) btn.pack(expand=YES, side=LEFT) btn1.pack(expand=YES, side=RIGHT) lbl.pack(expand=YES) root.mainloop() if len(sys.argv) == 2: if sys.argv[1] == '-w': wind_run() elif sys.argv[1] == '-c': print balance() else: print 'Usage:\nfor windowed\n\tpython 123.py -w \nfor console \n\tpython 123.py -c'
# можно было что то стандартное - но с грабом примеры были под рукой. import grab # логин и пароль, LOGIN = '1111111111' PASSWORD = '111111111' def from_inet(): """ получаем тело страницы с балансом с интернета """ # инициализация g = grab.Grab() g.go("http://byfly.by/") # ввод данных и переход на страницу удобную для получения данных g.set_input('oper_user', LOGIN) g.set_input('passwd', PASSWORD) g.submit() g.go('https://issa.beltelecom.by/main.html') return g.response.body
Офлайн
Вопрос не понятен. Так выставьте больше шрифт. А лучше скриншот в студию с пояснениями, что Вы хотите
P.S. И по коду. Код жуткий, но хотя-бы обернутый в теги, за что спасибо.
P.S.S. Никогда не делайте from Tkiner import *.
Офлайн
4kpt_II
А что именно в нем жуткого?.
по поводу скриншота - возможно я уже решил пролему самостоятельно. Если вопрос у меня решился - чуть позже напишу как.
Офлайн
Проблема все же решена. Вместо того дабы задавать размеры кнопок, просто задал размер окна. Получилось красивее. Вопрос по поводу что же такого жуткого в коде остался.
Офлайн
Ошибок тьма. Основные:
- комментарии где попало и как попало.
- названия виждетов и переменных.
- ООП нет и вряд-ли в ближайшее время будет
- про from tkinter import * уже написал.
- Жуть
lambda x: BALANCE.set(balance())
lambda x: sys.exit()
lambda event: root.destroy()
def balance(page=from_string()):
Офлайн
Хм. Спасибо. По поводу замечаний спасибо, но скажу что не все так плохо как вы думаете, ибо делался данный код на скорую руку, и он одновременно являлся знакомством с ткинтер, хотя это честно говоря плохое оправдание. Что такое PEP8 знаю, но все равно ознакомлюсь полностью. По поводу ООП - тут его нет, так как именно в данном случае оно не нужно абсолютно.
Офлайн
Maxim3500
По поводу ООП - тут его нет, так как именно в данном случае оно не нужно абсолютно.
Maxim3500
Что такое PEP8 знаю, но все равно ознакомлюсь полностью.
Отредактировано 4kpt_II (Окт. 27, 2014 23:33:15)
Офлайн