【问题标题】:How can I bind buttons and dialog boxes using tkinter?如何使用 tkinter 绑定按钮和对话框?
【发布时间】:2016-04-08 08:23:12
【问题描述】:

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

  1. 将“打开”按钮放在屏幕的右上角
  2. 如何将“打开”按钮与打开一个对话框相结合,用户可以在该对话框中选择要打开的文件?
  3. 将标签放在“打开”按钮下方 - 我所能做的就是将它们放在根的顶部或根的右侧
  4. 我需要使用画布和框架吗..?
  5. 如何将鼠标点击(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()                           

【问题讨论】:

  • 我建议为您的每个问题打开一个单独的问题,但在此之前,您可能需要搜索 SO 以寻找答案,您所问的一些问题已经被问及并回答过。
  • Reblochon 所说的。但与此同时...您可以使用.grid 方法而不是.pack 轻松控制小部件的放置。而且你不需要画布。
  • 您提出的所有问题都有明确记录,包含在一个或多个 tkinter 教程中,和/或在 stackoverflow 上有大量示例。 Stackoverflow 不是代码编写服务。您需要完成这项工作,然后提出无法通过查看其他答案或阅读文档来回答的具体问题。

标签: python user-interface button tkinter bind


【解决方案1】:
  1. 我建议您使用 Grid insted of pack,它可以让您更好地控制您的设计。在 Grid 中,您可以将按钮添加到左列(我不知道您将拥有多少列。如果您有三列,则将按钮添加到第三列),您可以使用

    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. 除非你想画一些东西,否则你不需要画布。

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

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

【讨论】:

  • Tesekkur Ederim Mustafa 和 Kiitos Antti!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-13
  • 1970-01-01
  • 1970-01-01
  • 2021-07-05
相关资源
最近更新 更多