【发布时间】:2017-09-24 14:40:01
【问题描述】:
我首先创建一个简单的提示窗口,用户将在其中填写目录名称以从中获取图像以及保存生成的 .csv 文件(和其他一些信息)的位置。
在这种情况下(在这种情况下)按回车后,我希望关闭此提示窗口,并显示用户将执行所有工作的主窗口。
简而言之,这是开始为我的 GUI 构建类的正确方法吗?还有为什么行:
frame = Frame(master, height=500,padx=20, pady=20)
不更改此初始窗口的格式/布局?
我觉得一旦我牢牢掌握了如何构建这个初始窗口,我将有适当的基础来继续我自己的其余部分。
#imports
from Tkinter import *
import glob
from PIL import Image, ImageTk
#end imports
class prompt_window:
def __init__(self, master):
frame = Frame(master, height=500,padx=20, pady=20)
#Build prompt window labels
self.source_label = Label(root, text="Source Directory")
self.destination_label = Label(root, text="Destination Directory")
self.region_sz_label = Label(root, text="Region Size")
self.save_file_name_label = Label(root, text="Save File Name")
#Build prompt window entry forms
self.source_entry = Entry(root)
self.destination_entry = Entry(root)
self.region_sz_entry = Entry(root)
self.save_file_name_entry = Entry(root)
#Build enter button
self.enter_button = Button(root, text="Enter")
#Align labels in prompt window grid
self.source_label.grid(row=0)
self.destination_label.grid(row=1)
self.region_sz_label.grid(row=2)
self.save_file_name_label.grid(row=3)
#Align entry forms in prompt window grid
self.source_entry.grid(row=0, column=1)
self.destination_entry.grid(row=1, column=1)
self.region_sz_entry.grid(row=2, column=1)
self.save_file_name_entry.grid(row=3, column=1)
#Add button
self.enter_button.grid(row=4,column=2)
#create root
root = Tk()
#create prompt window
prompt = prompt_window(root)
#run indefinitely
root.mainloop()
【问题讨论】:
-
您需要在
frame上调用.grid(),它可能应该是其他小部件的第一个参数,而不是root。类名应改为PromptWindow,以符合PEP 8 - Style Guide for Python Code。 -
@martineau 你能解释一下为什么应该在框架上调用 .grid() 以及它与保持适当结构的关系吗?
-
如果您的代码按预期运行且没有任何错误,并且您需要有关性能或代码的建议,您可以在CodeReview 上发布问题。当然,在发布之前,请阅读他们的旅游页面。
-
@Lafexlos 此代码未按预期工作:它不显示小部件。并且OP不知道如何组织事情,以便在提示窗口关闭后打开主窗口。
标签: python class user-interface tkinter