gpt4 book ai didi

python - 尝试使用 Tkinter 中的类创建多个框架

转载 作者:行者123 更新时间:2023-11-30 23:16:14 24 4
gpt4 key购买 nike

我正在尝试在我的主父窗口小部件中创建 2 个框架 - 一个使用 grid() 方法,另一个使用 pack() 方法。我首先以程序的方式编写它,它太困惑了,所以我尝试使用类来清理代码。下面是相关代码,我尝试使用 init 方法创建 2 个框架,但它抛出了各种错误。

from tkinter import *

class Application(Frame):
"""This class creates packed frames for the GUI"""
def __init__(self, master):
Frame.__init__(self, master)
self.framepack = Frame(master)
self.framepack.pack(side=BOTTOM, fill=X)
self.framegrid = Frame(master)
self.framegrid.pack(side=TOP)
self.create_widgets()

def create_widgets(self):
#Container 1 using LabelFrame, houses email and password labels and entries
self.inputlabels1 = LabelFrame(self, self.framepack, text="Input email login information here")
self.inputlabels1.grid(row=0, column=0, padx=10, pady=10)
self.emailfield = Label(self.inputlabels1, text="Email Address") #Labels
self.passfield = Label(self.inputlabels1, text="Password")

root = Tk()
app = Application(root)
root.mainloop()

整个事情就分崩离析了。问题代码是这样的:

        self.inputlabels1 = LabelFrame(self, self.framepack, text="Input email login information here")

我试图将此 Labelframe 小部件放入我之前初始化的两个框架之一,framepack,但它会引发错误。我的语法有问题吗?

最佳答案

我修改了你的示例,使其可以工作并显示一些内容。以目前的形式,它不起作用。此外,我还为框架添加了颜色,以便更容易看到它们。这有助于组织布局并了解正在发生的情况:

from tkinter import *

class Application(Frame):
"""This class creates packed frames for the GUI"""
def __init__(self, master):
Frame.__init__(self, master)

# added width=180, height=40, background='red'
self.framepack = Frame(master, width=180, height=40, background='red')
self.framepack.pack(side=BOTTOM, fill=X)

# added width=180, height=40, background='green'
self.framegrid = Frame(master, width=180, height=40, background='green')
self.framegrid.pack(side=TOP)
self.create_widgets()

def create_widgets(self):
# Container 1 using LabelFrame, houses email and password labels and entries

# Removed `self,` from the orginal code.
self.inputlabels1 = LabelFrame(self.framepack, text="Input email login information here")
self.inputlabels1.grid(row=0, column=0, padx=10, pady=10)
self.emailfield = Label(self.inputlabels1, text="Email Address") #Labels

# Called pack()
self.emailfield.pack()
self.passfield = Label(self.inputlabels1, text="Password")

# Called pack()
self.passfield.pack()

root = Tk()
app = Application(root)
root.mainloop()

enter image description here

希望这有帮助。

关于python - 尝试使用 Tkinter 中的类创建多个框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27805902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com