Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 5, 2007 19:57:51

FedeX
От:
Зарегистрирован: 2007-09-05
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter - отжать кнопку

Делаю так:
def ChooseOutDir(event):
dn = tkFileDialog.askdirectory()
outdirentry.insert(0,dn)

outdirbtn.bind(“<Button>”,ChooseOutDir)
Тоесть outdirbtn - это кнопка, при нажатии которой вызывается диалог выбора папки из модуля tkFileDialog и название выбранной пользователем папки вставляется в строку ввода outdirentry.
А проблема в том, что после исчезновения диалога выбора папки, кнопка, которая вызвала это событие, остаётся нажатой. Некрасиво ж ведь!!! И чего я не делаю никак не удаётся её отжать.
Уже спрашивал на одном форуме, но там молчат. Потихоньку начинаю догадываться, что выбор Tkinter как GUI был не лучшим ;) Всё как-то кривовато и не по-людски тут. Но переделывать, что уже сделал немного лень…



Офлайн

#2 Сен. 6, 2007 09:29:07

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Tkinter - отжать кнопку

потому что не по-людски программируете – поэтому и получаете фигню.
при создании кнопки (или позже) задаете в параметре command функцию, которая должна вызываться при нажатии на кнопку.
А событие <Button> – это вообще-то просто абстрактный щелчок левой клавишей мыши.

Так что ваш пример из серии: как запутать себя и Tcl/Tk.

RTFM



Офлайн

#3 Сен. 6, 2007 10:52:17

balu
От:
Зарегистрирован: 2006-05-24
Сообщения: 521
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter - отжать кнопку

FedeX
Всё как-то кривовато и не по-людски тут
Tcl/Tk на самом деле очень неплохой выбор. А как он может выглядеть смотрите тут - http://img468.imageshack.us/img468/6769/kaabh0.png И это питон.



Офлайн

#4 Сен. 6, 2007 11:43:52

astoon
От:
Зарегистрирован: 2007-04-09
Сообщения: 335
Репутация: +  2  -
Профиль   Отправить e-mail  

Tkinter - отжать кнопку

Извиняюсь за оффтоп:

balu
А как он может выглядеть смотрите тут - http://img468.imageshack.us/img468/6769/kaabh0.png
balu, это Tile или сам Tk ?



Офлайн

#5 Сен. 6, 2007 11:54:20

balu
От:
Зарегистрирован: 2006-05-24
Сообщения: 521
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter - отжать кнопку

Tile+Tileqt. Однако идеология разработки мало чем отличается.



Офлайн

#6 Сен. 6, 2007 18:33:29

FedeX
От:
Зарегистрирован: 2007-09-05
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter - отжать кнопку

bialix
Спасибо! Скорее-всего это оно. Вечером попробую.

bialix
потому что не по-людски программируете
Это меня так одна книжка научила. Некоего Ивана Вана Ланинхема (“Освой Питон самостоятельно за 24 часа”) ;)
А сам я на FreePascal-е обычно кодю.
balu
Tcl/Tk на самом деле очень неплохой выбор. А как он может выглядеть смотрите тут
Мне в принципе не слишком важен вид. Главное чтоб легко и быстро ГЮИ лепилось. А Tkinter немного (кхм…) не похож всмысле обработки событий и присваивания свойств на те библиотеки с которыми я уже работал на FreePascal…



Офлайн

#7 Сен. 7, 2007 10:02:37

balu
От:
Зарегистрирован: 2006-05-24
Сообщения: 521
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter - отжать кнопку

FedeX
А Tkinter немного (кхм…) не похож всмысле обработки событий и присваивания свойств на те библиотеки с которыми я уже работал на FreePascal…
Тогда вам ГТК или КуТе, хотя идеологии программирования гуйни там похожи. А книга ван Лейнинхема далеко не лучшая книга как по питону, так и по программировании гуйни на нем. Тем более, что используя КуТе или ГТК у вас появляется возможность лепить гуйню в графически. А Тикль хорошо проявляет себя на легких гуи и тогда, когда гуи должно генерироваться автоматически.



Отредактировано (Сен. 7, 2007 10:03:19)

Офлайн

#8 Май 7, 2011 08:03:13

hea007
От:
Зарегистрирован: 2010-10-22
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter - отжать кнопку

from Tkinter import *
import tkFileDialog

def ChooseOutDir(event):
dn = tkFileDialog.askdirectory()
statusbar.config(text = dn)

root=Tk()
outdirbtn=Button(root, text="Open File Dialog")
outdirbtn.bind("<Button-3>", ChooseOutDir)
outdirbtn.pack()
statusbar = Label(root, text="", bd=1, relief=SUNKEN, anchor=W)
statusbar.pack(side=BOTTOM, fill=X)
root.mainloop()
Вот так работает нормально, но с правой кнопкой мыши.
<Button-1> - остаётся нажатой.
В чем проблема???



Офлайн

#9 Май 7, 2011 18:00:25

kublo
От:
Зарегистрирован: 2011-04-08
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter - отжать кнопку

from Tkinter import *
import tkFileDialog

def ChooseOutDir():
dn = tkFileDialog.askdirectory()
statusbar.config(text = dn)

root = Tk()
Button(text="Open File Dialog", command=ChooseOutDir).pack()
statusbar = Label(text="", bd=1, relief=SUNKEN, anchor=W)
statusbar.pack(side=BOTTOM, fill=X)
root.mainloop()



Офлайн

#10 Май 8, 2011 21:46:47

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

Tkinter - отжать кнопку

Вообще Тк очень простой GUI. Намного проще того же QT, или wx. Это если ручками делать конечно. Плюс ttk рядом. Но с документацией для ttk проблема. Есть, но не всё гладко.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version