【发布时间】:2020-01-24 21:42:59
【问题描述】:
我正在尝试更改 tkinter 标题框的颜色。我正在使用这里找到的结构Can I change the title bar in Tkinter?
我遇到了一些问题。我一直在修改代码并研究可能的解决方案,但感觉很困难。
Text_input_window= Tk()
def get_pos(event):
xwin = Text_input_window.winfo_x()
ywin = Text_input_window.winfo_y()
startx = event.x_Text_input_window
starty = event.y_Text_input_window
ywin = ywin - starty
xwin = xwin - startx
def move_window(event):
Text_input_window.geometry("400x400"+'+{0}+{1}'.format(event.x_Text_input_window, event.y_Text_input_window))
startx = event.x_Text_input_window
starty = event.y_Text_input_window
Text_input_window.bind('<B1-Motion>', move_window)
Text_input_window.bind('<Button-1>', get_pos)
Text_input_window.overrideredirect(True) #removes default settings in Text_input_window
Text_input_window.geometry('460x250+300+200')
title_bar=Frame(Text_input_window, bg='SteelBlue1', relief='raised', bd=2)
这可能很明显,但我真的不知道这个人做了什么。我已经尝试了许多将函数放在不同部分的缩进排列 - 函数是否应该始终位于开头? 我认为这是我模仿的最好的版本。我得到一个颜色不同的窗口,右上角有一个“x”,它会自动关闭。但是窗口没有'移动,我得到的错误是:
startx = event.x_Text_input_window
AttributeError: 'Event' object has no attribute 'x_Text_input_window'
IDE 还显示 ywin、xwin、startx 和 starty 在starty = event.y_Text_input_window 行之后无法识别或变灰,就像它们没有工作一样。
【问题讨论】:
-
请提供一个完整的可测试示例。您至少缺少导入和主循环。那就是说您永远不会将 title_bar 添加到您的窗口中。您缺少
grid()或pack()。 -
我想你误解了这个属性
event.x_root。 x_root 不是因为根窗口在另一篇文章中被命名为 root。这只是属性名称,无论您如何称呼您的根窗口。所以使用event.x_root而不是event.x_Text_input_window。
标签: function events tkinter frame title