Python Tkinter 按钮未出现?
我刚开始学习tkinter(一个用来做图形界面的库),我写了下面这段Python代码:
#import the tkinter module
from tkinter import *
import tkinter
calc_window = tkinter.Tk()
calc_window.title('Calculator Program')
button_1 = tkinter.Button(text = '1', width = '30', height = '20')
button_1 = '1'
calc_window.mainloop()
但是当我运行这段代码时,按钮没有显示出来。有没有人知道这是为什么呢?谢谢!
4 个回答
在编程中,有时候我们需要处理一些数据,而这些数据可能会有很多不同的格式。比如说,你可能会遇到一些数字、文本或者日期等不同类型的数据。为了让计算机能够理解这些数据,我们需要将它们转换成一种统一的格式。
这就像我们在生活中使用不同的语言交流一样。如果大家都说同一种语言,那么沟通就会变得简单很多。同样的道理,统一数据格式可以让程序更容易处理这些信息。
在编程中,我们通常会使用一些函数或者方法来进行这种转换。比如说,如果我们有一个字符串(就是一串字符),我们可能需要把它转换成一个数字,这样计算机才能进行数学运算。
总之,处理数据格式的转换是编程中非常重要的一部分,它帮助我们让计算机更好地理解和使用数据。
from tkinter import *
calc_window = Tk()
calc_window.title('Calculator Program')
button_1 = Button(text = '1')
button_1.place(x=0,y=0,width = 30, height = 20)
calc_window.mainloop()
你没有把 button_1 打包。代码是:
from tkinter import *
root = Tk()
root.title('Calculator Program')
button_1 = Button(root, text='1', width='30', height='20')
button_1.pack()
root.mainloop()
这很简单!希望这对你有帮助!
from tkinter import *
import tkinter
calc_window = tkinter.Tk()
calc_window.title('Calculator Program')
frame = Frame(calc_window )
frame.pack()
button_1 = tkinter.Button(frame,text = '1', width = '30', height = '20')
button_1.pack(side=LEFT)
calc_window.mainloop()
试着用 pack() 方法来添加按钮。我不知道你为什么在代码里把 button_1 = '1'
这样写。
这里有个简单的例子:
from Tkinter import *
class App:
def __init__(self, master):
frame = Frame(master)
frame.pack()
self.button = Button(
frame, text="QUIT", fg="red", command=frame.quit
)
self.button.pack(side=LEFT)
self.hi_there = Button(frame, text="Hello", command=self.say_hi)
self.hi_there.pack(side=LEFT)
def say_hi(self):
print "hi there, everyone!"
root = Tk()
app = App(root)
root.mainloop()
要让一个小部件(widget)显示出来,需要两个步骤:首先,你得创建这个小部件,然后把它放到一个布局里。这就意味着你需要使用一种布局管理器,比如 pack
、place
或 grid
,来把它放在容器中的某个位置。
举个例子,这里有一种让你的代码工作的方式:
button_1 = tkinter.Button(text = '1', width = '30', height = '20')
button_1.pack(side="top")
选择 grid
还是 pack
取决于你自己的需求。如果你想把东西排成行和列,使用 grid
会比较合适,因为你可以在调用 grid
时指定行和列。如果你只是想把东西从左到右或者从上到下排列,使用 pack
会简单一些,更适合这种情况。
需要注意的是,place
很少用,因为它需要你精确控制位置,这就意味着你得手动计算 x 和 y 坐标,以及小部件的宽度和高度。这很麻烦,而且通常会导致小部件在主窗口变化时反应不佳(比如用户调整窗口大小时)。而且这样写出来的代码也不太灵活。
还有一个重要的事情要知道,你可以在同一个程序中同时使用 pack
和 grid
,但是不能在同一个父容器下的不同小部件上同时使用这两种布局管理器。