【问题标题】:Tkinter learning how to use pack and grid the hard wayTkinter 艰难地学习如何使用 pack 和 grid
【发布时间】:2013-02-06 14:39:58
【问题描述】:

这是我关于堆栈溢出的第一篇文章。 在谷歌搜索信息一整天后,我整理了我的第一个 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 如何工作和形成的整体理解。

【问题讨论】:

  • 您似乎已将问题更改为陈述。那是为什么?本网站用于提问和回答问题。如果你回过头来显着改变问题,那么答案将不再有意义。

标签: button grid tkinter label python-imaging-library


【解决方案1】:

我最好告诉你我的问题的答案 我不得不转换这个包代码

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 陷阱。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 好的,所以一切都是 pack() 我需要重新学习 grid() 方法来执行相同的 Tkinter 代码。我会花一整天的时间阅读、编辑、保存、运行。感谢您的建议,我觉得我可以在今天结束之前完成这项工作。
    猜你喜欢
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 2011-12-04
    • 2016-06-28
    相关资源
    最近更新 更多