-1

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

4

2 回答 2

0

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

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

于 2013-02-27T20:24:10.050 回答
0

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

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

于 2013-02-21T12:04:18.337 回答