-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

あなたの問題は、同じウィンドウで混合gridしていることです。packそれをしてはいけない。そのうちの 1 つが制御を取り、そのルールに従ってウィジェットのサイズを変更します。次に、1 つまたは複数のウィジェットのサイズが変更されたことを確認し、新しいサイズに合わせて再調整しようとします。これにより、他の一部のウィジェットのサイズが変更され、最初のウィジェットが認識して再調整する可能性があります。これは永遠に続きます。

grid同じアプリケーションでとを混在packさせることはできますが、両方を使用して同じ含まれるウィジェットを制御することはできません。

于 2013-02-21T12:04:18.337 に答える