我對 tkinter 真的很陌生,我想嘗試在 tkinter 中使用多個視窗。我從這里借用了代碼:https ://pythonprogramming.altervista.org/create-more-windows-with-tkinter/?doing_wp_cron=1645372524.8916330337524414062500 我希望能夠將按鈕從剛剛居中移動到中間在視窗的頂部,但我不確定如何移動視窗中的按鈕。我知道如何使用 pack() 通常將按鈕移動到類之外,但我不確定如何在類和此代碼中執行此操作。當我嘗試添加邊或填充等屬性時,會出現視窗,但不會出現按鈕。我到處尋找解決方案,但沒有找到適合我的問題的任何東西
代碼:
import tkinter as tk
class Win1:
def __init__(self, master):
self.master = master
self.master.geometry("800x800")
self.frame = tk.Frame(self.master)
self.butnew("Click to open Window 2", "2", Win2)
self.butnew("Click to open Window 3", "3", Win3)
self.frame.pack()
def butnew(self, text, number, _class):
tk.Button(self.frame, text = text, command= lambda: self.new_window(number, _class)).pack()
def new_window(self, number, _class):
self.new = tk.Toplevel(self.master)
_class(self.new, number)
class Win2:
def __init__(self, master, number):
self.master = master
self.master.geometry("800x800 200 200")
self.frame = tk.Frame(self.master)
self.quit = tk.Button(self.frame, text = f"Quit this window n. {number}", command = self.close_window)
self.quit.pack()
self.frame.pack()
def close_window(self):
self.master.destroy()
class Win3:
def __init__(self, master, number):
self.master = master
self.master.geometry("800x800 200 200")
self.frame = tk.Frame(self.master)
self.quit = tk.Button(self.frame, text = f"Quit this window n. {number}", command = self.close_window)
self.quit.pack()
self.label = tk.Label(self.frame, text="THIS IS ONLY IN THE THIRD WINDOW")
self.label.pack()
self.frame.pack()
def close_window(self):
self.master.destroy()
root = tk.Tk()
app = Win1(root)
root.mainloop()
uj5u.com熱心網友回復:
我建議使用 .grid() 而不是 .pack() 因為它可以讓您更好地控制如何放置小部件。使用 grid() 它可以讓您選擇設定列、行、padx 和 pady、粘性值以及其他值。
這是使用網格將按鈕呈現到螢屏上的示例:
Button = Button(root, text="Button")
Button.grid(row=1, column=1)
要在使用 grid() 時將按鈕居中放置在螢屏上,請添加“粘性”選項。
這是一個實際使用的stick選項的示例:
Button = Button(root, text="Button")
Button.grid(row=1, column=1, sticky=N)
使用粘性時,這是您的所有選項:
- N 北或頂部中心
- S 南或底部中心
- E 東或右中心
- W 西或左中心
- NW 西北或左上角
- 東北東北或右上角
- SE東南或右下角
- SW 西南或左下角
- NS 垂直拉伸小部件。但是,它使小部件水平居中。
- EW 水平拉伸小部件。但是,它使
小部件垂直居中。
這是一個很好的資源鏈接,您可以在其中了解有關使用 grid() 的更多資訊:
如何在 Tkinter 中使用 grid()
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/431683.html
