Найти - Пользователи
Полная версия: Вопросы по GUI
Начало » GUI » Вопросы по GUI
1 2
GloomDemon
Здравствуйте

Код::
# -*- coding: cp1251 -*-
from Tkinter import *
top = Tk()
dir(top)
F = Frame(top)
F.pack()

# Підпис поля вводу
lHello = Label(F, text="Input")
lHello.pack()
lHello.pack(side="left")

#Поле вводу
fEntry = Frame(F, border=1)
eHello = Entry(fEntry)
fEntry.pack(side="left", expand="true")
eHello.pack(side="left", expand="true")


# Кнопка виходу з програми
bQuit = Button(F, text="Exit", command=F.quit)
bQuit.pack()
Скажите пожалуйста как можно получить значение которое вводится в поле ввода? eHello - как Я понимаю.
И еще - как можно заставить кнопку при ее нажатии выполнять кусок кода?

Большое спасибо :-)
slav0nic
eHello.get() читаешь
для кнопок - пишешь ф-цию и command = ф-ция при вызове
как у тебя command=F.quit
GloomDemon
slav0nic

Я не умею писать функции - то Я с сайта скопировал и пытиаюсь подстроить под свои нужды :-(
slav0nic
может тогда книжки почиатешь перед изучением gui, хотя бы азы?)
GloomDemon
slav0nic

Так Я и читаю - купил “Освой самостоятельно Питон за 24 часа” Иван ван Лейнингема - но у меня такое впечатление, что он для другой версии Питона написан - половина примеров не работает, в гуе по крайней мере :-( Пример где их текстового поля выдается значение и выводится на экран сыплет ошибками - хотя Я четко все перепечатал :-(

Кстати - умею Я писать функции как выяснилось - просто в моем понимании они назывались подпрограммами :-)

Я пишу вот так:

eHello.get()
print eHello
А оно мне ошибку выдает, а просто eHello выдает какое-то абсолютно левое значение разделенное точками.
Если честно - Я бы в GUI и не лез - моя програмка данные обсчитывает, но начальство требует графический интерфейс и хоть Ты тресни…

Мне бы вот только научится с текстового поля значение вытащить…..
slav0nic
ну ты ёпт…
на

from Tkinter import *
#ф-ция, которая вызывается при нажатии на Read
def read_entry():
print eHello.get()


top = Tk()
dir(top)
F = Frame(top)
F.pack()

# Підпис поля вводу
lHello = Label(F, text=“Input”)
lHello.pack()
lHello.pack(side=“left”)

#Поле вводу
fEntry = Frame(F, border=1)
eHello = Entry(fEntry)
fEntry.pack(side=“left”, expand=“true”)
eHello.pack(side=“left”, expand=“true”)

#кнопка чтения
bRead = Button(F, text=“Read”, command=read_entry)
bRead.pack()
# Кнопка виходу з програми
bQuit = Button(F, text=“Exit”, command=F.quit)
bQuit.pack()

top.mainloop()


а Python за 24 часа, неплохая книга для начала, довольно простая, там всё есть и примеры есть, а начинать с ГУИ не уменя писать ф-ция мммм
GloomDemon
# -*- coding: cp1251 -*-

# Програма отримує дані з наступних файлів
# Oneselfcostdecrease.dat - зниження собівартості від впровадження інновації на одиницю
# Oneprofitincrease.dat - приріст прибутку від впровадження інновації на одиницю
# Onequantitydecrease.dat - умовне зменшення кількості працюючих від впровадження інновації на одиницю
# Onematerialdecrease.dat - економія матеріальних ресурсів від впровадження інновації на одиницю
# Oneexpenditure.dat - витрати на одиницю впровадження інновації
# В кінці файлу даних повинна бути порожня строка

# Відкриваємо базу даних для читання
Oneselfcostdecrease = file("Oneselfcostdecrease.dat","r")
Oneprofitincrease = file("Oneprofitincrease.dat","r")
Onequantitydecrease = file("Onequantitydecrease.dat","r")
Onematerialdecrease = file("Onematerialdecrease.dat","r")
Oneexpenditure = file("Oneexpenditure.dat","r")

# Ініціалізуємо лічильник для обмеження кількості ітерацій
[b]n = "string"[/b]

# Ініціалізуємо лічильник помилок
Error = 0

# Ініціалізуємо лічильник кількості оброблених інновацій
Total = 0

from Tkinter import *

#ф-ция, которая вызывается при нажатии на Read
def read_entry():
Quantity = eHello.get()

# Перевірка на кінець файлу
[b] while n<>"":[/b]

# Зчитуємо значення та перевіряємо співпадіння назв інновацій
Name = Oneselfcostdecrease.readline()
one = Oneselfcostdecrease.readline()
if Oneprofitincrease.readline()<> Name:
print "Помілка! Не співпадають назви інновації у Oneprofitincrease.dat"
Error = Error+1
two = Oneprofitincrease.readline()
if Onequantitydecrease.readline()<> Name:
print "Помілка! Не співпадають назви інновації у Onequantitydecrease.dat"
Error = Error+1
three = Onequantitydecrease.readline()
if Onematerialdecrease.readline()<> Name:
print "Помілка! Не співпадають назви інновації у Onematerialdecrease.dat"
Error = Error+1
four = Onematerialdecrease.readline()
if Oneexpenditure.readline()<> Name:
print "Помілка! Не співпадають назви інновації у Oneexpenditure.dat"
Error = Error+1
five = Oneexpenditure.readline()

# Задаємо значення лічильнику для перевірки на кінець файлу
n = five

# Перевірка на кінець файлу
if n <> "":

# Задаємо значення лічильнику кількості оброблених інновацій
Total = Total+1

#Позбавляємось символу кінця строки
one = one.strip()
two = two.strip()
three = three.strip()
four = four.strip()
five = five.strip()

#Конвертуємо значення у числову форму
one = float(one)
two = float(two)
three = float(three)
four = float(four)
five = float(five)

#Обчислюємо та виводимо на екран необхідні значення
print
print Name
print "Сумарне зниження собівартості........... ", one*Quantity,"грн."
print "Сумарний приріст прибутку............... ", two*Quantity,"грн."
print "Зменшення чисельності працівників....... ", three*Quantity,"чол."
print "Економія ресурсів....................... ", four*Quantity,"кг."
Nfinance = five*Quantity
print "Потрібне фінансування................... ", Nfinance,"грн."
Eefect = two*Quantity-five*Quantity
print "Загальний економічний ефект............. ", Eefect,"грн."
print "Ефективність інвестування............... ", Eefect/Nfinance
print "_______________________________________________________"

# Повідомляємо користувача про помилки
if Error<>0:
print
print "Увага! Під час роботи програми зафіксовано", Error, "помилок."
print "Результати можуть бути невірними."

# Повідомляємо користувача про кількість оброблених інновацій
print
print "Оброблено інновацій:", Total
print "Обсяг впровадження :", Quantity

# Закриваємо базу даних
Oneselfcostdecrease.close()
Oneprofitincrease.close()
Onequantitydecrease.close()
Onematerialdecrease.close()
Oneexpenditure.close()

top = Tk()
dir(top)
F = Frame(top)
F.pack()

# Підпис поля вводу
lHello = Label(F, text="Input")
lHello.pack()
lHello.pack(side="left")

#Поле вводу
fEntry = Frame(F, border=1)
eHello = Entry(fEntry)
fEntry.pack(side="left", expand="true")
eHello.pack(side="left", expand="true")

#кнопка чтения
bRead = Button(F, text="Read", command=read_entry)
bRead.pack()

top.mainloop()
Елки палки - почему при запуске Питон ругается что n (выделено черным) используется до ее определения?????????? Я же n инициализировал до определения функции……

Exception in Tkinter callback
Traceback (most recent call last):
File “C:\Python24\lib\lib-tk\Tkinter.py”, line 1345, in __call__
return self.func(*args)
File “C:\Python24\Python.txt”, line 34, in read_entry
while n<>“”:
UnboundLocalError: local variable ‘n’ referenced before assignment
slav0nic
и как питон будет сравнивать то чего нет?
GloomDemon
# Ініціалізуємо лічильник для обмеження кількості ітерацій
n = “string”

Как это нет - а вот это? Причем в консольном варианте все работает….. И до функции оно есть, а в функции пропадает :-(
Viper
2 GloomDemon, перед while n<>“”: добавь строку global n. Поидее должно помочь.
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