python-3.x - Python 3+ Tkinter 中心标签文本

标签 python-3.x tkinter label

这是 Windows 操作系统上 Python 3+ 的 tkinter 问题。所以我知道如何将标签文本居中 (justify=CENTER)而且我从我搜索的所有内容中知道标签文本默认是合理的中心。

有人可以看看我下面的代码,请告诉我我做错了什么。我已经在网上搜索了几个小时,但我看不出我做错了什么。

from tkinter import *
from tkinter.ttk import *


class MainApplication():

    def __init__(self, master):
        self.master = master
        self.master.title("OOP GUI Example")
        self.master.iconbitmap("Blank.ico")


        label = Label(self.master, text="Test Callback", )
        greet_button = Button(self.master, width=25, text="Greet", command=self.greet)
        close_button = Button(self.master, width=25, text="Close", command=self.close)

        Grid.columnconfigure(self.master, 0, weight=1)
        Grid.rowconfigure(self.master, (0,1,2), weight=1)

        label.grid(row=0, column=0, sticky="NSWE",padx=(10, 10), pady=(7.5, 0))
        greet_button.grid(row=1, column=0, sticky="NSWE", padx=(10, 10), pady=(10, 1.5))
        close_button.grid(row=2, column=0, sticky="NSWE", padx=(10, 10), pady=(1.5, 10))


    def greet(self):
        print("Greetings!")
        return


    def close(self):
        self.master.quit()
        return


root = Tk()
root.style = Style()
#  ('winnative', 'clam', 'alt', 'default', 'classic', 'vista', 'xpnative')
root.style.theme_use("clam")
gui = MainApplication(root)
root.mainloop()

此行在这里 label.grid(row=0, column=0, sticky="NSWE",padx=(10, 10), pady=(7.5, 0))正在使文本左对齐。特别sticky="NSWE"但我想要这个,所以标签小部件会随着窗口调整大小,所以我被卡住了。

最佳答案

问题是您正在阅读 tkinter 标签的文档,但您使用的是 ttk 标签。这就是为什么你不应该使用通配符导入的原因——当两个模块导出具有相同名称的对象时(例如: tkinter.Labelttk.Label ),很难知道你的代码中使用了哪个。 ttk 标签的默认设置是左对齐,但 tkinter 标签居中对齐,并且导入的顺序意味着您使用的是 ttk 标签。

您的示例的快速修复是显式设置 anchor ttk 标签的选项(例如: label.configure(anchor="center") )。

你还应该修复你的导入,这样这个问题就不会再发生在你身上了。而不是进行通配符导入(例如: from tkinter import * ),您应该显式地将模块作为一个单元导入,可选地使用更短的名称。一旦你这样做了,你需要在你的小部件前面加上模块的名称。

例如,给定这些导入语句:

import tkinter as tk
from tkinter import ttk

...然后您将使用 ttk.Label(...) 创建一个 ttk 标签,以及带有 tk.Label(...) 的 tkinter 标签这使您的代码更容易理解,并且消除了所有歧义。

关于python-3.x - Python 3+ Tkinter 中心标签文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48306487/

相关文章:

python - Pandas groupby 获得平均一天

python - 如何获取单个行的值?

r - 根据长数据上 id 变量的值(与行号无关)为 ggplot 中的特定标签着色

javascript - 在 nvd3.js 中编辑多条形图中的标签文本

python - 在猎鹰中添加自定义 HTTP 方法?

python - for循环中的.Split()不返回列表

python - 当多个元素具有最高计数时,pandas describe() - top 如何工作?

python - 如何一次从多个 Tkinter GUI 窗口写入 Excel 文件?

python - 循环中带有变量的 tkinter 绑定(bind)函数

html - 点击标签打不开选择