小编Big*_*pie的帖子

有没有办法灰显(禁用)tkinter帧?

我想在tkinter中创建一个带有两个Frame的GUI,并使底部框架变灰,直到某些事件发生.

下面是一些示例代码:

from tkinter import *
from tkinter import ttk

def enable():
    frame2.state(statespec='enabled') #Causes error

root = Tk()

#Creates top frame
frame1 = ttk.LabelFrame(root, padding=(10,10,10,10))
frame1.grid(column=0, row=0, padx=10, pady=10)

button2 = ttk.Button(frame1, text="This enables bottom frame", command=enable)
button2.pack()

#Creates bottom frame
frame2 = ttk.LabelFrame(root, padding=(10,10,10,10))
frame2.grid(column=0, row=1, padx=10, pady=10)
frame2.state(statespec='disabled') #Causes error

entry = ttk.Entry(frame2)
entry.pack()

button2 = ttk.Button(frame2, text="button")
button2.pack()

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

这是否可以,而不必单独灰显所有frame2的小部件?

我正在使用Tkinter 8.5和Python 3.3.

python state tkinter frame

8
推荐指数
2
解决办法
1万
查看次数

我可以双击tkinter Listbox选项以在Python中调用函数吗?

我有一个带有关联的“选择”按钮的列表框。我希望我的GUI能够双击任何列表框值来调用此按钮的命令。当选择一个选项并且用户双击窗口中的任何位置时,我的尝试(以下)有效。我希望它仅在双击选择本身(蓝色突出显示的行)时才起作用。

做这个的最好方式是什么?

from tkinter import *

def func1():
    print("in func1")

def func2():
    print("in func2")

def selection():
    try:
        dictionary[listbox.selection_get()]()
    except:
        pass

root = Tk()

frame = Frame(root)
frame.pack()

dictionary = {"1":func1, "2":func2}

items = StringVar(value=tuple(sorted(dictionary.keys())))

listbox = Listbox(frame, listvariable=items, width=15, height=5)
listbox.grid(column=0, row=2, rowspan=6, sticky=("n", "w", "e", "s"))
listbox.focus()

selectButton = Button(frame, text='Select', underline = 0, command=selection)
selectButton.grid(column=2, row=4, sticky="e", padx=50, pady=50)

root.bind('<Double-1>', lambda x: selectButton.invoke())

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

python user-interface listbox tkinter double-click

5
推荐指数
1
解决办法
6662
查看次数

如何在 python 的 tkinter 8.5 中将 ttk.LabelFrame 的蓝色标题标签更改为黑色

我在 Windows 7 机器上使用 tkinter 8.5 和 python 3.3。

下面的代码以蓝色字体颜色呈现 Labelframe 的标题。

from tkinter import *
from tkinter import ttk

root = Tk()

lf = ttk.LabelFrame(root, text="Why is this blue?")
lf.pack()

label = ttk.Label(lf, text="label")
label.pack()
Run Code Online (Sandbox Code Playgroud)

我尝试通过添加 ttk.Style() 来解决此问题,但出现意外显示:

from tkinter import *
from tkinter import ttk

root = Tk()

s = ttk.Style()
s.configure('TLabelframe.Label', font='arial 14 bold')

lf = ttk.LabelFrame(root, text="Now it's black, but w/ a bizarre display"
                    " and no etched frame.", style='TLabelframe.Label')
lf.pack()

label = ttk.Label(lf, text="label")
label.pack() …
Run Code Online (Sandbox Code Playgroud)

python tkinter ttk

3
推荐指数
1
解决办法
2811
查看次数

如何将 '&lt;Return&gt;' 绑定到 tkinter 中的焦点(选项卡式)按钮?

我的 tkinter 8.5 GUI(在 Windows 7 上)中有多个按钮。我希望当用户按 Enter 时选择聚焦(选项卡式)的任何按钮。我知道我必须绑定'<Return>',但我需要填补其余的空白。

提前致谢!

python tkinter

2
推荐指数
1
解决办法
1470
查看次数

Python tkinter 8.5 - 如何将焦点从主窗口更改为弹出窗口?

我是tkinter的新手并且有一个相当简单的问题.我希望将焦点从第一个窗口更改为弹出窗口后roottxt窗口.我也想要关注"确定"按钮.当然,这个想法是让用户在看到这个错误时能够点击输入.在使用focus(),focus_set()和takefocus进行各种尝试后,我非常困惑.我找不到这方面特别有用的文档.

以下是我的代码:

from tkinter import *
from tkinter import ttk

def close(self):
    self.destroy()

def browse(*args):
    fileName = filedialog.askopenfilename()
    guiInputFile_entry.insert(0, fileName)
    return fileName

def formatInput(*args):
    if guiInputFile.get()[-4:] != ".txt": #checks for correct file extension (.txt)


    txt = Tk()
    txt.title("Error")         

    txtFrame = ttk.Frame(txt, padding="30 30 30 30")            
    txtFrame.grid(column=0, row=0, sticky=(N,W,E,S))
    txtFrame.columnconfigure(0, weight=1)
    txtFrame.rowconfigure(0, weight=1)

    ttk.Label(txtFrame, text = "Please enter a .txt file.\n").grid(column=2, row=1)
    okButton = ttk.Button(txtFrame, text = "OK", command = lambda: close(txt)).grid(column=2, row=2)
    return

    root = Tk() …
Run Code Online (Sandbox Code Playgroud)

python focus tkinter

2
推荐指数
1
解决办法
1591
查看次数

Python tkinter 8.5导入消息框

以下代码在IDLE中运行正常,但我得到"NameError:全局名称'messagebox'未定义".但是,如果我明确说明from tkinter import messagebox,它可以从任何地方运行.

from tkinter import *
from tkinter import ttk 

root = Tk()
mainFrame = ttk.Frame(root)
messagebox.showinfo("My title", "My message", icon="warning", parent=mainFrame)
Run Code Online (Sandbox Code Playgroud)

为什么IDLE不需要显式的import语句,但在其他地方需要它?

python tkinter messagebox nameerror

2
推荐指数
2
解决办法
3540
查看次数