大家好,如果是主視窗,我正在嘗試使用幾何函式調整我的 tkinter 視窗的大小。
當我在不創建類的情況下嘗試這樣做時,我可以調整它的大小。
但是,當我嘗試調整由類方法創建的視窗大小時,我遇到了一種方法,在該方法中,在將主視窗作為引數傳遞給類初始化之前,先調整其大小。
但是當我試圖在不通過 master 而不將其作為引數傳遞的情況下這樣做時,我的解釋器崩潰了。
我想知道的是我在做什么是正確的嗎?
如果不是,請幫助我理解為什么解釋器會崩潰。
這是我嘗試運行的代碼。
class App(Tk):
def __init__(self):
self.geometry('300x300')
#self.tk.Tk.geometry('300x300') Tried this but it didn't do anything.
Label(text='Post Navigation Button').grid(row=0,column=0)
self.listbox = Listbox(selectmode='multiple',height=len(x))
for each_item in range(len(x)):
self.listbox.insert(END, x[each_item])
self.listbox.itemconfig(each_item, bg = "lime")
self.listbox.grid(row=0,column=1)
self.tag = Text(height=1,width=100)
self.tag.grid(row=0,column=2)
Button(text='click me',command=self.submit).place(x=500,y=50)
def submit(self):
text = self.tag.get('0.0',END)
selection = [self.listbox.get(i) for i in self.listbox.curselection()]
print(text.strip(),','.join(selection))
app = App()
mainloop()
我不想像這樣創建一個母版并將其作為引數傳遞。
root = tk.Tk()
root.geometry('300x300')
app = App(root)
mainloop()
所以我只想知道從課堂內部調整視窗大小的方法。
我不知道我的代碼有多正確。所以歡迎任何幫助。
uj5u.com熱心網友回復:
您的代碼有幾個缺陷:
- 您需要在 init 的最開始實體化
Tk該類super().__init__()以使用其方法和屬性 - 小部件的第一個引數應該是主人,所以你需要通過
self - 你沒有定義你的串列
x mainloop是你的物件的函式app,所以用app.mainloop()
作業示例:
from tkinter import Tk, Label, Listbox, END, Button, Text
class App(Tk):
def __init__(self):
super().__init__()
self.geometry('300x300')
#self.tk.Tk.geometry('300x300') Tried this but it didn't do anything.
Label(self, text='Post Navigation Button').grid(row=0,column=0)
x = [1,2,3]
self.listbox = Listbox(self, selectmode='multiple',height=len(x))
for each_item in range(len(x)):
self.listbox.insert(END, x[each_item])
self.listbox.itemconfig(each_item, bg = "lime")
self.listbox.grid(row=0,column=1)
self.tag = Text(self, height=1,width=100)
self.tag.grid(row=0,column=2)
Button(self, text='click me',command=self.submit).place(x=500,y=50)
def submit(self):
text = self.tag.get('0.0',END)
selection = [self.listbox.get(i) for i in self.listbox.curselection()]
print(text.strip(),','.join(selection))
app = App()
app.mainloop()
uj5u.com熱心網友回復:
動態調整大小的正確方法(執行時)。我注釋掉第 6 行和第 7 行。并將其添加super().__init__()到第 5 行。
from tkinter import Tk, Label, Listbox, END, Button, Text
class App(Tk):
def __init__(self):
super().__init__()
#self.geometry('300x300')
#$self.tk.Tk.geometry('300x300') #Tried this but it didn't do anything.
Label(text='Post Navigation Button').grid(row=0,column=0)
self.listbox = Listbox(selectmode='multiple',height=8)
for each_item in range(5):
self.listbox.insert(END, each_item)
self.listbox.itemconfig(each_item, bg = "lime")
self.listbox.grid(row=0,column=1)
self.tag = Text(height=1,width=100)
self.tag.grid(row=0,column=2)
Button(text='click me',command=self.submit).place(x=500,y=80)
def submit(self):
text = self.tag.get('0.0',END)
selection = [self.listbox.get(i) for i in self.listbox.curselection()]
print(text.strip(),','.join(selection))
app = App()
app.mainloop()
結果:

uj5u.com熱心網友回復:
幾何必須在 TK() 物件上使用,而不是在基于它的類上使用。為此,您必須獲得班級的父級:
def __init__(self):
top=self.winfo_toplevel() #Flexible Toplevel of the window
top.geometry("300x300")
編輯:代碼中還有一些問題導致類無法正常執行,包括方法中的遞回以及布局中__init__()的混合。在為幾何問題提供解決方案時,我沒有看到這一點。.grid.place
在這里嘗試完整代碼作為起點:
from tkinter import *
class App(Frame):
def __init__(self, master=None):
Frame.__init__(self,master)
top=self.winfo_toplevel() #Flexible Toplevel of the window
top.geometry("300x300")
self.grid(sticky=N S W E)
Label(self, text='Post Navigation Button').grid(row=0,column=0)
x = [1,2,3]
self.listbox = Listbox(self, selectmode='multiple',height=len(x))
for each_item in range(len(x)):
self.listbox.insert(END, x[each_item])
self.listbox.itemconfig(each_item, bg = "lime")
self.listbox.grid(row=0,column=1)
self.tag = Text(self, height=1,width=100)
self.tag.grid(row=0,column=2)
Button(self, text='click me',command=self.submit).grid(row=1,column=2,sticky=W)
def submit(self):
text = self.tag.get('0.0',END)
selection = [self.listbox.get(i) for i in self.listbox.curselection()]
print(text.strip(),','.join(selection))
root=Tk()
app = App(root)
root.mainloop()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/533593.html
上一篇:顯示鍵盤集成
下一篇:PythonTkinter和回圈
