我是Tkinter的新人,我想创建一个"形式" (我真的不知道如何调用它)写入数据库。我完成了它,但由于布局我很沮丧。
我有这个代码来制作"形式":
self.parent.title("Pozi")
self.pack(fill = BOTH, expand=True)
frame1 = Frame(self)
frame1.pack(side = LEFT)
lbl1 = Label(frame1, text = "ĂtadĂł kártyája", width = 15)
lbl1.pack(side = TOP, padx=5)
atadoText = StringVar()
atadoText.set('')
self.entry1 = Entry(frame1, textvariable=atadoText)
self.entry1.pack(side = BOTTOM, padx=5)
atadoText.trace('w',atado_enter)
self.atadoText = atadoText
self.entry1.focus()
frame2 = Frame(self)
frame2.pack(side = RIGHT)
lbl2 = Label(frame2, text = "ĂtvevĹ‘ kártyája", width = 15)
lbl2.pack(side = TOP, padx=5, expand=True)
atvevoText = StringVar()
atvevoText.set('')
self.entry2 = Entry(frame2, textvariable = atvevoText)
self.entry2.pack(side = BOTTOM, padx=5)
atvevoText.trace('w', atvevo_enter)
self.atvevoText = atvevoText
frame3 = Frame(self)
frame3.pack(side = RIGHT)
lbl3 = Label(frame3, text = "ĂrvevĹ‘ kártyája", width = 15)
lbl3.pack(side = TOP, padx=5, expand=True)
lblText = StringVar()
lblText.set('')
self.entry3 = Entry(frame3, textvariable = lblText)
self.entry3.pack(side = TOP, padx=5, expand=True)
lblText.trace('w', lbl_count)
self.lblText = lblText
lbl4 = Label(frame3, text = "Title", width = 15)
lbl4.pack(side = TOP, anchor=N, padx=5, pady=5)
self.txt = Text(frame3)
self.txt.pack(fill = BOTH, side = TOP, padx=5, pady=5, expand=True)
答案 0 :(得分:1)
首先,不要害怕谷歌搜索pack manager,特别是关于packer algorithm,然后尝试理解为什么你得到你得到的。
由于pack
逻辑的相对性,初学者控制小部件的水平和垂直定位并不是一件容易的事。因此,请记住“分而治之”的原则,并将您的程序布局视为一组块,我们将窗口小部件按水平顺序或垂直顺序放置,而不会混合。
每个红色区块都是Frame
小部件+ Root
(或“主”Frame
,可随意创建一个),只需一个下订单。
要表示类似这样的内容,请尝试以下代码段:
try:
import tkinter as tk
except ImportError:
import Tkinter as tk
root = tk.Tk()
frame1 = tk.Frame()
frame1.pack()
for _ in range(2):
i_frame = tk.Frame(frame1)
label = tk.Label(i_frame, text='Sample%d' % _)
label.pack(padx=200)
entry = tk.Entry(i_frame)
entry.pack(padx=200)
i_frame.pack(side='left', ipady=25)
frame2 = tk.Frame()
frame2.pack()
label = tk.Label(frame2, text='Sample3')
label.pack()
entry = tk.Entry(frame2)
entry.pack()
label = tk.Label(frame2, text='Title', width=15)
label.pack()
txt = tk.Text(frame2)
txt.pack()
root.mainloop()
另外,请记住,有grid经理!使用此管理器,您可以将布局视为表格,因此也可以尝试一下!