鱼C论坛

 找回密码
 立即注册
查看: 2664|回复: 4

[已解决]tkinter使用grid进行页面布局时报错

[复制链接]
发表于 2021-5-20 07:39:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
想请教一下,写了几个message的按钮,然后想给它们进行页面布局,实现按钮全部靠左对齐,报以下错误
tkinter.TclError: cannot use geometry manager grid inside . which already has slaves managed by pack
原代码如下:

import tkinter as tk
import tkinter.messagebox


window = tk.Tk()
window.title('my window')
window.geometry('300x200')



def hit_me():
    tk.messagebox.showinfo(title = 'Hi',message = 'hahaha')

def Warning():
    tk.messagebox.showwarning(title = 'warnig',message = 'please check your setting')

def Error():
    tk.messagebox.showerror(title = 'error',message = 'error 404')

def Ask():
    result = tk.messagebox.askyesno(title = 'asking',message = 'Ok to open?')
    if result == 1:
        print('saved successful!')
    else:
        print('fail to save!')
   
   

b1 = tk.Button(window,text = 'hit me',command = hit_me)
b1.pack()
b2 = tk.Button(window,text = 'warning',command = Warning)
b2.pack()
b3 = tk.Button(window,text = 'error',command = Error)
b3.pack()
b4 = tk.Button(window,text = 'asking',command = Ask)
b4.pack()

b1.grid(row = 0,column = 0)
b2.grid(row = 1,column = 0)
b3.grid(row = 2,column = 0)
b4.grid(row = 4,column = 0)

window.mainloop()

网上搜索说是place不能和grid一起用,但是我好像没用到place,请教一下大家这段代码的问题
最佳答案
2021-5-20 12:59:27


楼主应该搜错或看错了,是 pack 与 grid 不能对同一个父组件使用,而 place 可以混用

你代码中先用了 pack() 进行布局管理,又用了 grid() 进行,肯定会导致报错呀

参考代码:

  1. import tkinter as tk
  2. import tkinter.messagebox

  3. window = tk.Tk()
  4. window.title('my window')
  5. window.geometry('300x200')


  6. def hit_me():
  7.     tk.messagebox.showinfo(title='Hi', message='hahaha')

  8. def Warning():
  9.     tk.messagebox.showwarning(title='warnig', message='please check your setting')

  10. def Error():
  11.     tk.messagebox.showerror(title='error', message='error 404')

  12. def Ask():
  13.     result = tk.messagebox.askyesno(title='asking', message='Ok to open?')
  14.     if result == 1:
  15.         print('saved successful!')
  16.     else:
  17.         print('fail to save!')

  18. b1 = tk.Button(window, text='hit me', command=hit_me)
  19. b1.grid(row=0, column=0)
  20. b2 = tk.Button(window, text='warning', command=Warning)
  21. b2.grid(row=1, column=0)
  22. b3 = tk.Button(window, text='error', command=Error)
  23. b3.grid(row=2, column=0)
  24. b4 = tk.Button(window, text='asking', command=Ask)
  25. b4.grid(row=4, column=0)

  26. window.mainloop()
复制代码



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-20 07:53:00 From FishC Mobile | 显示全部楼层
你用了pack  ,这些都不能一起用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-5-20 12:59:27 | 显示全部楼层    本楼为最佳答案   


楼主应该搜错或看错了,是 pack 与 grid 不能对同一个父组件使用,而 place 可以混用

你代码中先用了 pack() 进行布局管理,又用了 grid() 进行,肯定会导致报错呀

参考代码:

  1. import tkinter as tk
  2. import tkinter.messagebox

  3. window = tk.Tk()
  4. window.title('my window')
  5. window.geometry('300x200')


  6. def hit_me():
  7.     tk.messagebox.showinfo(title='Hi', message='hahaha')

  8. def Warning():
  9.     tk.messagebox.showwarning(title='warnig', message='please check your setting')

  10. def Error():
  11.     tk.messagebox.showerror(title='error', message='error 404')

  12. def Ask():
  13.     result = tk.messagebox.askyesno(title='asking', message='Ok to open?')
  14.     if result == 1:
  15.         print('saved successful!')
  16.     else:
  17.         print('fail to save!')

  18. b1 = tk.Button(window, text='hit me', command=hit_me)
  19. b1.grid(row=0, column=0)
  20. b2 = tk.Button(window, text='warning', command=Warning)
  21. b2.grid(row=1, column=0)
  22. b3 = tk.Button(window, text='error', command=Error)
  23. b3.grid(row=2, column=0)
  24. b4 = tk.Button(window, text='asking', command=Ask)
  25. b4.grid(row=4, column=0)

  26. window.mainloop()
复制代码



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-21 06:37:35 | 显示全部楼层
qq1151985918 发表于 2021-5-20 07:53
你用了pack  ,这些都不能一起用

感谢回复,问题已解决
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-21 06:38:34 | 显示全部楼层
Twilight6 发表于 2021-5-20 12:59
楼主应该搜错或看错了,是 pack 与 grid 不能对同一个父组件使用,而 place 可以混用

你代码中先用 ...

是的,是报的pack错误,问题已解决,非常感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-25 00:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表