我正在使用 TkInter 编写一个 Python 文本编辑器,并且正在编写“首选项”窗口来编辑字体、字体尺寸等。它位于
__openPreferences()
类中的 LampText
方法中。我在其中添加了一个带有“选择默认字体:”文本的标签,以引入一个下拉列表来选择一种可用字体。问题是,当我写 lblFont.grid(row=1, column=1)
时它不起作用——它保持在默认位置。即使我使用更大的数字,它仍然不起作用。我不知道这个问题。
这是代码:
import tkinter
class Menu:
def __init__(self, parent, font):
menu = tkinter.Menu(parent.mainWin, font=font)
parent.mainWin.config(menu=menu)
dpdFile = tkinter.Menu(menu, font=font, tearoff=0)
dpdFile.add_command(label="New")
dpdFile.add_command(label="Open")
dpdFile.add_command(label="Save")
dpdFile.add_command(label="Save As")
dpdFile.add_command(label="New")
dpdFile.add_separator()
dpdFile.add_command(label="Exit")
dpdAbout = tkinter.Menu(menu, font=font, tearoff=0)
dpdAbout.add_command(label="About")
dpdAbout.add_command(label="Release Notes")
dpdPref = tkinter.Menu(menu, font=font, tearoff=0)
dpdPref.add_command(label="Change Preferences", command=parent._LampText__openPreferences)
menu.add_cascade(label="File", menu=dpdFile)
menu.add_cascade(label="About", menu=dpdAbout)
menu.add_cascade(label="Preferences", menu=dpdPref)
class LampText:
def __init__(self, mainWin, txFont, mnFont):
self.final = " - LampText 1.0"
mainWin.title("Untitled" + self.final)
mainWin.geometry("1200x600")
self.mainWin = mainWin
self.txArea = tkinter.Text(mainWin, font=txFont)
self.scrBar = tkinter.Scrollbar(mainWin, command=self.txArea.yview)
self.txArea.configure(yscrollcommand=self.scrBar.set)
self.txArea.pack(side=tkinter.LEFT, fill=tkinter.BOTH, expand=True)
self.scrBar.pack(side=tkinter.RIGHT, fill=tkinter.Y)
self.topBar = Menu(self, mnFont)
def __openPreferences(self):
prefWin = tkinter.Tk()
prefWin.title("Preferences - Notebook 1.0")
prefWin.geometry("600x300")
lblFont = tkinter.Label(prefWin, text="Choose Default Font:")
lblFont.grid(row=1, column=1)
prefWin.mainloop()
if __name__=='__main__':
win = tkinter.Tk()
txFnt = "Tebuchet MS"
txDim = "10"
txFont = (txFnt, txDim)
mnFnt = "Tebuchet MS"
mnDim = "8"
mnFont = (mnFnt, mnDim)
LampTextWin = LampText(win, txFont, mnFont)
win.mainloop()
非常感谢您的帮助!
可能是因为这个窗口上只有一个小部件, 您可能想在网格函数中使用
padx
和 pady
。