如何使用 tkinter 绑定按钮和对话框?

How can I bind buttons and dialog boxes using tkinter?

我正在尝试使用 tkinter 创建 Python GUI。谁能告诉我如何做以下事情:

  1. 将“打开”按钮放在屏幕右上角
  2. 如何将我的 "Open" 按钮与打开一个对话框结合起来,用户可以在其中选择要打开的文件?
  3. 将标签放在“打开”按钮下 - 我所能做的就是将它们放在根的顶部或根的右侧
  4. 我需要使用 canvas 和框架吗?
  5. 如何 send/display 鼠标点击(x,y 坐标)到标签而不是我的控制台?

我的代码如下:

from tkinter import *

def clicks(event):                          
    print(event.x, event.y)                 
    xy_coord = "x=%d y=%d" % (event.x, event.y)
    return xy_coord

myroot = Tk()                               

label = Label(myroot, text="Co-ord: ", fg="black")  
label.pack(side=TOP)                        

myFilename = filedialog.askopenfilename(filetypes = ( ("how code files", "*.hc"), ("All Files", "*.*") ) ) 
print(myFilename)

button = Button(myroot, text="Open file: ", fg="Blue") 
button.bind("<Button>", click)
button.pack(side=RIGHT, padx=5, pady=5)     

frame = Frame(myroot, bg="Grey", width=300, height=300) 
frame.bind("<Button>", clicks)              
frame.pack(expand=YES, fill=BOTH)           

myroot.mainloop()                           
  1. 我建议您使用 Grid 而不是 pack,这样您可以更好地控制您的设计。在网格中,您可以将按钮添加到左列(我不知道您将拥有多少列。如果您有三列,您会将按钮添加到第三列)并且您可以使用

    openButton.grid(column=3, sticky=E)
    

这意味着您的按钮将固定在栏的东侧。您还可以使用 N、E、W、S 或 EW 等组合来扩展您的按钮。

  1. 为打开按钮编写事件以打开用于选择文件的对话框。

    def browse(event):
        myFilename = filedialog.askopenfilename(filetypes = ( ("how code files", "*.hc"), ("All Files", "*.*") ) )
    
    openButton.bind("<Button-1>", browse)
    

之后就可以使用文件路径myFilename打开文件了。

  1. 同样,如果您使用网格系统,您可以将打开按钮放在第一行第三列,将标签放在第二行第三列。代码将类似于此

    openButton.grid(row=1, column=3 sticky=E)
    
    label = Label(myroot).grid(row=2, column=3 sticky=E)
    
  2. 你不需要 canvas 除非你想画点东西。

  3. 您可以使用 .config 在 Tkinter 中更新标签的文本。

    def clicks(event):                                         
        xy_coord = "x=%d y=%d" % (event.x, event.y)
        label.config(text= xy_coord)