python - 框架在 Tkinter 中是否有单独的框架位置?

标签 python python-3.x layout tkinter

我遇到了一个问题,我认为我知道答案。这很奇怪,我制作了一个框架来放置条目和按钮,这样它们就不会因为我制作的盒子而显得相距太远。但是条目和按钮不在框架中,因为框架的背景是红色但没有任何红色,并且条目/按钮仍然奇怪地分开。

代码:

# Hex GUI
import re
import tkinter as tk

hexa_checker_regex = re.compile(r'^#')


class Window:


    def __init__(self, master, error_checker):
        self.error_checker = error_checker
        self.master = master
        self.master.configure(bg='LightBlue')
        self.set_up()


    def set_up(self):

        # =====FRAME FOR ENTRYS + BUTTONS=====

        self.enter_frame = tk.Frame(self.master, bg='Red').grid(row=0, column=2, sticky='n')

        # =====COLOR BOX=====

        self.color = tk.Frame(self.master, highlightbackground='Black', height=100, width=100, highlightthickness=5)
        self.color.grid(row=0, column=0)

        # =====SEPERATOR=====

        tk.Frame(self.master, width=200, bg='LightBlue').grid(row=0, column=1)


        # =====HEXADECIMAL COLORS=====

        tk.Label(self.enter_frame, text='Hex:', bg='LightBlue').grid(row=0, column=2, sticky='n')

        self.the_color_hex = tk.Entry(self.enter_frame, width=50)
        self.the_color_hex.grid(row=0, column=3, sticky='n')

        tk.Button(self.enter_frame, text='Change Color', command=self.change_color_hex).grid(row=0, column=4, sticky='n')

        # =====HEX ERROR=====

        tk.Label(self.enter_frame, textvariable=self.error_checker, bg='LightBlue').grid(row=1, column=2, columnspan=2, sticky='n')

        # =====REGULAR COLORS===== <--- UNFINISHED RAN INTO ERROR FIRST

        tk.Label(self.enter_frame, text='Color:', bg='LightBlue').grid(row=2, column=2, sticky='n')

        self.reg_color = tk.Entry(self.enter_frame, width=50)
        self.reg_color.grid(row=2, column=3, sticky='n')



    def change_color_hex(self):
        if hexa_checker_regex.search(self.the_color_hex.get()) is None:
            self.error_checker.set('That is an invalid hexadecimal value!')
        else:
            try:
                self.color.configure(bg=self.the_color.get())
                self.error_checker.set('')
            except:
                self.error_checker.set('That is an invalid hexadecimal value!')
        self.the_color_hex.delete(0, 'end')



root = tk.Tk()
error_checker = tk.StringVar()
app = Window(root, error_checker)
root.mainloop()

Looks Like

那么,为什么条目和按钮不在框架中。另外,为什么条目和按钮的位置会受到框的影响,如果它们在框架中(它们不是因为框架的背景是红色的)?

最佳答案

问题是这一行

self.enter_frame = tk.Frame(self.master, bg='Red').grid(row=0, column=2, sticky='n')

self.enter_frame 将等于“无”,因此 tkinter 不能使用它来放置其他小部件。将此更改为

 self.enter_frame = tk.Frame(self.master, bg='Red')
 self.enter_frame.grid(row=0, column=2, sticky='n')

你的一些问题将会消失。

另一个错误是这一行

self.color.configure(bg=self.the_color.get())

应该是

self.color.configure(bg=self.the_color_hex.get())

关于python - 框架在 Tkinter 中是否有单独的框架位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51771106/

相关文章:

python - 解压 PyInstaller 打包文件

python - 我对文件的搜索似乎出现索引错误

Python 字节文字

html - 在不影响body宽度的情况下使用宽背景div的技巧

javascript - 拆分导航溢出 - 如果浏览器窗口宽度较小,则将页眉拆分为页脚

python - 如何防止 Excel/XlsxWriter 在我的公式中随机添加 @ 字符

python - 如何在 Anaconda 环境中更改 Python 解释器路径?

Python 3.5(32 位): ImportError: cannot import name NUMPY_MKL

c++ - 在另一个类中定义的类如何知道它的父类?

python - 使用 pyunit 在 Python 中测试异常