Button Tkinter通过艰苦的方式学习如何使用pack和grid

Button Tkinter通过艰苦的方式学习如何使用pack和grid,button,grid,tkinter,label,python-imaging-library,Button,Grid,Tkinter,Label,Python Imaging Library,这是我第一次发布堆栈溢出。 在谷歌搜索了一整天的信息后,我组装了我的第一个python Tkinter软件。 当我运行我的第一个软件tkinter时,我非常沮丧,因为它让我自己思考,没有产生任何错误或显示任何内容。 我决定在堆栈溢出上发布代码 请阅读我的Python代码#解释Python的工作原理: #load the normal drivers import Tkinter from Tkinter import * import Tkinter as tk import tkMessage

这是我第一次发布堆栈溢出。 在谷歌搜索了一整天的信息后,我组装了我的第一个python Tkinter软件。 当我运行我的第一个软件tkinter时,我非常沮丧,因为它让我自己思考,没有产生任何错误或显示任何内容。 我决定在堆栈溢出上发布代码

请阅读我的Python代码#解释Python的工作原理:

#load the normal drivers
import Tkinter
from Tkinter import *
import Tkinter as tk
import tkMessageBox
from PIL import Image, ImageTk
from Tkconstants import *
# this makes the master app window
master = Tk()
master.geometry('+0+0')
master.wm_title("App Window")
frame = Frame(master, height=300, width=700, background="black")
frame.pack_propagate(0)
#intro image on the right column
img = ImageTk.PhotoImage(file="1.gif")
panel = tk.Label(master, image = img).grid(row = 1, column = 2)
#code to put Buttons into the left column Label
panel2 = tk.Label().grid(row = 1, column = 1)
#onClick commands I will work on Later.
def onClick1():
    master.image = PhotoImage(file="captain_scarlett.gif")
    w = Label(master, image=master.image)
    w.photo = master
    w.pack(side=RIGHT) 
def onClick2():
    photo = PhotoImage(file="1.gif")
    w = Label(master, image=photo)
    w.photo = photo
    w.pack(side=RIGHT)
def onClick3():
    photo = PhotoImage(file="1.gif")
    w = Label(master, image=photo)
    w.photo = photo
    w.pack(side=RIGHT)
def onClick4():
    photo = PhotoImage(file="1.gif")
    w = Label(master, image=photo)
    w.photo = photo
    w.pack(side=RIGHT)
#these are the Buttons that go into left column      
master.Button1 = Button(panel2, text="captain_scarlet",  fg="#000",    
width=17, background="yellow", command=onClick1) 
master.Button2 = Button(panel2, text="Page 2",  fg="#000", width=17,    
background="yellow", command=onClick2)
master.Button3 = Button(panel2, text="Page 3",  fg="#000", width=17,   
background="yellow", command=onClick3)
master.Button4 = Button(panel2, text="Page 4",  fg="#000", width=17,   
background="yellow", command=onClick4)
#normal exiting commands    
frame.pack()
master.mainloop()

我得到的答案改变了我对Tkinter工作原理和格式的全部理解。

你的问题是,你在同一个窗口中混合了
网格
。你不能那样做。其中一个将根据其规则控制和调整小部件的大小。然后,另一个将看到一个或多个小部件已经改变了大小,并尝试根据新的大小重新调整。这可能会导致其他一些小部件改变大小,导致第一个小部件注意到并重新调整。这将永远持续下去


您可以在同一个应用程序中混合使用
grid
pack
,但不能同时使用它们来控制同一个包含小部件。

我最好向您展示我的问题的答案 我必须转换这个密码

def onClick1():
    master.image = PhotoImage(file="captain_scarlett.gif")
    w = Label(master, image=master.image)
    w.photo = master
    w.pack(side=RIGHT) 
并使代码在网格上可用,而不会让Tkinter头痛

def but1():
    img = Image.open("captain_scarlett.gif")
    intro = ImageTk.PhotoImage(img)
    right = Label(win, image=intro)
    right.grid(row=0, column=1, rowspan=14)
    right.image=intro

我希望这些信息能帮助人们摆脱我在以后某个时候掉进的Tkinter陷阱。

好的,所以所有关于pack()的东西我都需要重新学习grid()方法来完成相同的Tkinter代码。我会花一整天的时间阅读,编辑,保存,跑步。谢谢你的建议,我觉得我能在今天结束前把这件事做好。你似乎已经把你的问题变成了陈述。为什么会这样?本网站提供问题和问题答案。如果你回过头来,对问题进行重大修改,那么答案将不再有意义。