所以我正在学习python,这本书教我用tkinker创建标签的两种方法:
self.canvas.create_text(30,10,text="Welcome",tags="text")
&
self.lbl = Label(frame1, text = "Welcome")
在前一个示例中,移动它很容易:
self.canvas.move("text", 1, 0)
在后一个示例中,更改其背景色很容易:
self.lbl["bg"] = "red"
但是我不知道如何移动它和改变它的背景色,至少不知道如何增量移动它。我可以做到:
self.lbl.place(x=2)
但除非我能提前得到x坐标,否则我只能移动一次。我可以提前设定,但如果可能的话,我想避免这个选择。
两者都有办法。
首先,
Canvas
文本没有背景,但是可以用矩形创建自己的文本。从那里开始,你只要按照你在问题中提到的方式移动它们。将组标记添加到文本和矩形中可以避免分别移动这两个项。
其次,可以使用
.winfo_x()
和.winfo_y()
方法获取小部件的当前x,y坐标。所以移动Label
变成了一个简单的加减法:我不知道有哪种方法可以像move方法对画布那样以增量方式移动小部件。
至于哪一个是最好的,我想不出他们之间有什么不同。我想使用
Canvas
将意味着您不能重叠窗口中的任何其他窗口小部件,因为文本只会滚动出视图,如果您开始使用ttk
版本的Label
,那么样式设置并不是很直接,尽管并不困难。相关问题 更多 >
编程相关推荐