直到现在,我曾经用以下结束我的Tkiter程序:tk.mainloop()
或者什么都不会出现!见例子:
from Tkinter import *
import random
import time
tk = Tk()
tk.title = "Game"
tk.resizable(0,0)
tk.wm_attributes("-topmost", 1)
canvas = Canvas(tk, width=500, height=400, bd=0, highlightthickness=0)
canvas.pack()
class Ball:
def __init__(self, canvas, color):
self.canvas = canvas
self.id = canvas.create_oval(10, 10, 25, 25, fill=color)
self.canvas.move(self.id, 245, 100)
def draw(self):
pass
ball = Ball(canvas, "red")
tk.mainloop()
Run Code Online (Sandbox Code Playgroud)
然而,当尝试下这个程序的下一步(让球随时间移动)时,本书正在阅读,说要做到以下几点.将绘图功能更改为:
def draw(self):
self.canvas.move(self.id, 0, -1)
Run Code Online (Sandbox Code Playgroud)
并将以下代码添加到我的程序:
while 1:
ball.draw()
tk.update_idletasks()
tk.update()
time.sleep(0.01)
Run Code Online (Sandbox Code Playgroud)
但我注意到添加这段代码,使用tk.mainloop()
无用,因为即使没有它,一切都会出现!
在这一刻,我应该提到我的书从未谈到tk.mainloop()
(也许是因为它使用Python 3)但我学会了它在网上搜索,因为我的程序不能通过复制书的代码工作!
所以我尝试做以下不起作用!
while 1:
ball.draw()
tk.mainloop() …
Run Code Online (Sandbox Code Playgroud) 我注意到为相同的字符串添加空格使得它们比较不相等is
,而非空间版本比较相等.
a = 'abc'
b = 'abc'
a is b
#outputs: True
a = 'abc abc'
b = 'abc abc'
a is b
#outputs: False
Run Code Online (Sandbox Code Playgroud)
我已经阅读了关于将字符串与==
和进行比较的问题is
.我认为这是一个不同的问题,因为空格字符正在改变行为,而不是字符串的长度.看到:
a = 'abc'
b = 'abc'
a is b # True
a = 'gfhfghssrtjyhgjdagtaerjkdhhgffdhfdah'
b = 'gfhfghssrtjyhgjdagtaerjkdhhgffdhfdah'
a is b # True
Run Code Online (Sandbox Code Playgroud)
为什么在字符串中添加空格会改变此比较的结果?
我一直在从一本电子书中学习 Python。现在我正在学习这个Tkinter
模块
这本书建议运行以下代码。但是,它不能正常工作。任何想法为什么?
from Tkinter import *
window = Tk()
window.geometry("200x200")
my_frame = Frame()
my_frame.pack
button1 = Button(my_frame, text = "I am at (100x150)")
button1.place(x=100, y=150)
button2 = Button(my_frame, text = "I am at (0 x 0)")
button2.place(x=0, y=0, width=100, height=50)
window.mainloop()
Run Code Online (Sandbox Code Playgroud)
我应该得到什么:
我得到的:
添加button1.pack()
and 后button2.pack()
,我得到了这个: