“label.grid”的布局问题

问题描述 投票:0回答:1

我正在使用 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()

非常感谢您的帮助!

python tkinter text-editor tkinter-label
1个回答
0
投票

可能是因为这个窗口上只有一个小部件, 您可能想在网格函数中使用

padx
pady

© www.soinside.com 2019 - 2024. All rights reserved.