Форум сайта python.su
Здравствуйте.
Пытаюсь написать програмку считающую формулу по вводимым параметрам чисел. Столкнулся с проблемой что не выводятся окна ввода параметров. А именно для этого решил использовать однострочное текстовое поле. Но по какой-то причине оно не выводится и вообще подойдет оно для ввода чисел?. Подскажите что не так делаю. Заранее спасибо
(Python 2*)
# -*- coding: cp866 -*-
from Tkinter import *
window = Tk()
window.title(u'Оценка достоверности функционирования сетевого элемента телекоммуникационной сети')
label = Label(window, text = u'Оценка достоверности функционирования \n сетевого элемента телекоммуникационной сети')
label.config(fg = ‘blue’, font = ('Georgia', 8, ‘italic’))
label.pack()
class label1:
def __init__(self):
self.lab = Label (window, text = u'X=')
self.lab.config(fg = ‘red’, font = ('Georgia', 8, ‘italic’))
self.lab.pack()
obj = label1()
ent = Entry(window,width=20,bd=3)
class label2:
def __init__(self):
self.lab = Label (window, text = u'Y=')
self.lab.config(fg = ‘red’, font = ('Georgia', 8, ‘italic’))
self.lab.pack()
obj = label2()
ent = Entry(window,width=20,bd=3)
class label3:
def __init__(self):
self.lab = Label (window, text = u'Z=')
self.lab.config(fg = ‘red’, font = ('Georgia', 8, ‘italic’))
self.lab.pack()
obj = label3()
ent = Entry(window,width=20,bd=3)
class But1:
def __init__(self):
self.but = Button(window, text = u'Посчитать',width=10,height=1,bg=“white”,fg=“blue”, command = window.quit)
self.but.pack(expand=YES, fill=X)
obj = But1()
window.mainloop()
Отредактировано fedor (Ноя. 16, 2013 14:14:41)
Офлайн
По Вашему посту:
- Вы считаете, что размещать его не надо?
Теперь вообще:
1. Оберните код в теги. Сложно разобраться с отступами.
2. Код не очень. Уберите class, если не знаете, как им в событийных системах пользоваться. На первых порах можно и без него. Это нормально.
3. Неверно и так уже не пишут
# -*- coding: cp866 -*-
# coding: utf-8
from Tkinter import *
label.config()
Отредактировано 4kpt_II (Ноя. 16, 2013 14:27:33)
Офлайн
# coding: utf-8 from Tkinter import * root = Tk() root.title(u'Оценка достоверности функционирования сетевого элемента телекоммуникационной сети') label = Label(root, text = u'Оценка достоверности функционирования \n сетевого элемента телекоммуникационной сети') label.config(fg = 'blue', font = ('Georgia', 8, 'italic')) label.pack() label1 = Label (root, text = u'X=') label1.config(fg = 'red', font = ('Georgia', 8, 'italic')) label1.pack() ent = Entry(root,width=20,bd=3) label2 = Label (root, text = u'Y=') label2.config(fg = 'red', font = ('Georgia', 8, 'italic')) label2.pack() ent = Entry(root,width=20,bd=3) label3 = Label (root, text = u'Z=') label3.config(fg = 'red', font = ('Georgia', 8, 'italic')) label3.pack() ent = Entry(root,width=20,bd=3) button = Button(root, text = u'Посчитать',width=10,height=1,bg="white",fg="blue", command = root.quit) button.pack(expand=YES, fill=X) root.mainloop()
Отредактировано fedor (Ноя. 16, 2013 15:45:07)
Офлайн
Ссылка на тему Смотрите с середины
Далее. По Вашему вопросу. Я же уже ответил.
# coding: utf-8 import Tkinter import tkFont # def quit(): root.destroy() # root = Tkinter.Tk() root.title(u'Оценка достоверности функционирования сетевого элемента телекоммуникационной сети') fnt = tkFont.Font(family='Georgia', size=8, slant='italic') # Соберите шрифт один раз... # label = Tkinter.Label(root, text=u'Оценка достоверности функционирования \n сетевого элемента телекоммуникационной сети', fg='blue', font=fnt) label.pack() label1 = Tkinter.Label(root, text=u'X=', fg='red', font=fnt) label1.pack() ent_x = Tkinter.Entry(root, width=20, bd=3) ent_x.pack() #Забыли упаковать этот виджет # label2 = Tkinter.Label (root, text=u'Y=', fg='red', font=fnt) label2.pack() ent_y = Tkinter.Entry(root, width=20, bd=3) ent_y.pack() # label3 = Tkinter.Label(root, text=u'Z=', fg='red', font=fnt) label3.pack() #И этот... ent_z = Tkinter.Entry(root, width=20, bd=3) ent_z.pack() #Вот этот тоже выводиться не будет :) # button = Tkinter.Button(root, text=u'Посчитать', width=10, height=1, bg="white", fg="blue", command=quit) button.pack(expand=True, fill="x") # root.mainloop()
root.quit
Отредактировано 4kpt_II (Ноя. 16, 2013 17:22:50)
Офлайн
Спасибо большое за ответ, все доходчиво. По подключению библиотеки tkinter как было ранее внял из прочитанного по ссылке.
Можно уточнить ещё несколько вопросов?
что нам дает импорт tkFont и def quit?
import tkFont # def quit(): root.destroy()
Офлайн
1. Импорт tkFont дает вам возможность в пространстве выполнения создавать шрифты и самостоятельно их настраивать. И потом использовать их короткие записи для назначения этих шрифтов нужным виджетам.
Мне кажеться, что
font=fnt
font = ('Georgia', 8, 'italic')
Отредактировано 4kpt_II (Ноя. 16, 2013 17:47:32)
Офлайн
1.С бонусом согласен
2.Усвоил, я так и собираюсь потом написать действие кнопки к вычислению функции и выводу графика
3.grid() если не ошибаюсь дает возможность выстраивать объекты в пространстве?
ent_x.grid(row=0,column=0)
Отредактировано fedor (Ноя. 16, 2013 18:00:05)
Офлайн
Все менеджеры геометрии объектов служат для размещения виджетов в пространстве. Подходы только разные. Единственное, что нужно помнить: два разных менеджера на одном виджете работать не будут. Чтобы это реализовать нужно для каждого менеджера создавать свою рамку (Tkinter.Frame). И рамки с размещенными объектами уже размещать на базовом виджете.
Будут вопросы - пишите.
Отредактировано 4kpt_II (Ноя. 16, 2013 18:08:53)
Офлайн