使用tkinter的Python中的简单GUI

时间:2017-04-03 11:10:17

标签: python-3.x tkinter

我正在尝试使用tkinter在python中创建一个简单的GUI。我想做的是

  1. 将我的输入元素放在GUI窗口上半部分的中心
  2. 在它旁边放一个按钮
  3. 点击按钮,打开界面选择文件
  4. 在条目元素

    中显示文件名及其路径
    def center_window(width, height):
        # get screen width and height
        screen_width = root.winfo_screenwidth()
        screen_height = root.winfo_screenheight()
    
        # calculate position x and y coordinates
        x = (screen_width/2) - (width/2)
        y = (screen_height/2) - (height/2)
        root.geometry('%dx%d+%d+%d' % (width, height, x, y))
    
        def OnButtonClick(self):
            self.entryVariable.set( tkinter.filedialog.askopenfilename() )
            self.entry.focus_set()
            self.entry.selection_range(0, tkinter.END)
    
    
    root = tkinter.Tk()
    center_window(400, 300)
    root.title("A simple GUI")
    root.entryVariable = tkinter.StringVar()
    root.entry = tkinter.Entry(root,textvariable=root.entryVariable)
    root.entry.grid(column=10,row=5,columnspan=20)
    B = tkinter.Button(root, text ="Choose", command=OnButtonClick(root))
    B.grid(column=30,row=5, columnspan=2)
    
  5. 有人可以指导我如何将entry元素和button移动到GUI窗口上半部分的中心。另外,如何在单击按钮时调用tkinter.filedialog.askopenfilename()函数。当我运行上面的代码时,GUI窗口打开后立即调用它。感谢。

1 个答案:

答案 0 :(得分:2)

以下是修订后的代码。基本上,您需要将一个函数对象传递给command的{​​{1}}参数,这意味着您可以传递一个没有尾部括号的函数(如果它不接受任何参数)或者使用Button。在您的原始代码中,您的函数在python解释器到达该行后立即执行。此外,您需要在程序结束时调用lambda

root.mainloop
相关问题