gpt4 book ai didi

python - 如何使用 tkinter 和 python oop 将项目/小部件放入其他类中

转载 作者:太空宇宙 更新时间:2023-11-03 21:40:11 29 4
gpt4 key购买 nike

我正在努力找出一种方法,根据单击的按钮在每个按钮下方添加一个彩色框。使用 tkinter 和 python3,我想使用类在按钮 1 下添加一个红色框(如果单击该按钮),或者在按钮 2 下添加一个绿色框(如果单击该按钮)。我还希望它位于每个按钮所在的相应框架内。我有什么选择?感谢您的支持:)

import tkinter as tk

class MyDialog:
def __init__(self, parent):
top = self.top = tk.Toplevel(parent)
self.myLabel = tk.Label(top, text='Enter Name')
self.myLabel.pack()

self.myEntryBox = tk.Entry(top)
self.myEntryBox.pack()

self.mySubmitButton = tk.Button(top, text='Press', command=self.send)
self.mySubmitButton.pack()

def send(self):
global username
username = self.myEntryBox.get()
self.top.destroy()

def onClick():
inputDialog = MyDialog(root)
root.wait_window(inputDialog.top)
print('Username: ', username)

class MainWindow:

def __init__(self, master):

mainLabel = tk.Label(root, text='Main Window')
mainLabel.pack()

button1_frame = tk.Frame()
button1_frame.pack()

mainButton = tk.Button(root, text='Button 1', command=onClick, width=20)
mainButton.pack(side=tk.LEFT)

button_frame2 = tk.Frame()
button_frame2.pack()

mainButton2 = tk.Button(root, text='Button 2', command=onClick, width=20)
mainButton2.pack(side=tk.LEFT)


root = tk.Tk()
app = MainWindow(root)
root.mainloop()

最佳答案

您的问题有很多不清楚的地方,但希望我明白您想要什么:

  1. 您想用颜色指示点击了哪个按钮。

您应该将事件绑定(bind)到按钮并使用 config 方法更改背景颜色。

  • 您希望按钮位于您创建的框架内,而不是位于根窗口本身。
  • 您已经正确初始化了框架,但是您没有为框架设置父级,也没有使用框架作为按钮的父级。

    所以你可能想修改你的代码,使其更像:

    class MainWindow:

    def __init__(self, master):

    mainLabel = tk.Label(root, text='Main Window')
    mainLabel.pack()

    button1_frame = tk.Frame(root)
    button1_frame.pack()

    mainButton = tk.Button(button1_frame, text='Button 1', command=onClick, width=20)
    mainButton.bind('<Button-1>', lambda event: mainButton.config(bg='red'))
    mainButton.pack(side=tk.LEFT)

    button_frame2 = tk.Frame(root)
    button_frame2.pack()

    mainButton2 = tk.Button(button_frame2, text='Button 2', command=onClick, width=20)
    mainButton2.bind('<Button-1>', lambda event: mainButton2.config(bg='green'))
    mainButton2.pack(side=tk.LEFT)

    关于python - 如何使用 tkinter 和 python oop 将项目/小部件放入其他类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52920531/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com