Может нужно использовать другие виджеты?
Также приветствуются любые другие советы по поводу данной программы.
Вот код
#!/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