为了账号安全,请及时绑定邮箱和手机立即绑定

Tkinter - 无法在主窗口上移动画布

Tkinter - 无法在主窗口上移动画布

子衿沉夜 2021-07-09 14:11:34
我正在学习 tkinter,并创建了一个简单的转换器。我已经创建了一个画布并将我所有的小工具都放在上面。我的主窗口是 800x640,画布是 400x320。完成后,我想使用网格命令并为我的画布找到一个我喜欢的位置。但是,当我执行 canvas.grid(row=rownr, column=columnnr) 时,无论我在 grid 方法中为 row 和 col 提供什么值,画布都会转到主窗口上的 row=0, column=0 。如果我添加另一个小部件,例如在 (0,0) 处的主窗口上的标签,然后我尝试将画布移动到 (0,1) 然后画布转到该位置。但是,如果画布是我主窗口上唯一的小部件,则它根本不会使用网格方法移动。请帮助我理解为什么会发生这种情况。这是整个代码:from tkinter import *from tkinter.ttk import *from tkinter import messageboxfrom tkinter import Menudef convert_meters():    # get value from entry and convert it to all    result_in_meters = int(label1_1.get())# integer value    result_in_km.set(float(result_in_meters/1000))    result_in_dem.set(float(result_in_meters*10))    result_in_miles.set(float(result_in_meters*0.000621371))    result_in_yards.set(float(result_in_meters*1.09361))def get_value_and_convert():    if(combo1.get()=="meters"):        convert_meters()    elif(combo1.get()=="centimeters"):        convert_centimeters()    elif(combo1.get()=="millimeters"):        convert_millimeters()    elif(combo1.get()=="inches"):        convert_inches()    else:        result_in_km.set("0")        result_in_dem.set("0")        result_in_miles.set("0")        result_in_yards.set("0")window = Tk()window.title("Converter")result = IntVar()result_in_km = StringVar()result_in_dem = StringVar()result_in_miles = StringVar()result_in_yards = StringVar()canvas1 = Canvas(window, width=400, height=320, bd=1, highlightthickness=1, relief='ridge')canvas1.grid(row=2, column=2)#### Things to convert #####label1 = Label(canvas1, text="Convert ", width=8)label1_1 = Entry(canvas1, width=2) # between label1 and comboboxcombo1 = Combobox(canvas1, width=8)combo1['values'] = ("meters","centimeters","millimeters","inches")combo1.current(0)label2 = Label(canvas1, text=" to:", width=10)############################这是我尝试用网格定位画布的行(在声明画布之后):canvas1.grid(row=2, column=2)感谢您的阅读!
查看完整描述

1 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

空行和空列的大小为 0。


如果您只想移动画布,可以使用填充:


from tkinter import *


window = Tk()

window.geometry('800x640')


canvas1 = Canvas(window, width=400, height=320, bd=1,

                 highlightthickness=1, relief='ridge', bg='khaki')

canvas1.grid(row=2, column=2, padx=50, pady=100)


window.mainloop()


查看完整回答
反对 回复 2021-07-13
  • 1 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号