簡體   English   中英

啟動Tkinter GUI

[英]Starting a tkinter GUI

我想開始使用tkinter GUI制作程序。

我在大學期間學到了一些tkinter,但是從那以后已經很長時間了,老實說,我還沒有保留任何知識。 在重新閱讀了有關tkinter的文檔之后,我確信這是沒有希望的,因為我不確定我必須使用哪種tkinter類型才能使程序表現出我想要的方式(主要是因為我正在嘗試處理圖片)

我程序的最終目的(簡化)是將游戲板放置為背景圖像(background.gif等),並在這些圖像的上方,當用戶單擊該屏幕區域時放置另一個圖像。

我嘗試了create_image,但是由於某種原因我無法使其正常工作。 即使我確實可以正常工作,我也不確定要如何在tkinter的另一個圖像之上繪制圖像?

我想我的主要問題是:我該如何做才能創建背景圖像,又可以在該圖像畫布的頂部放置小部件/其他圖像? 還是應該使用標簽/框架?

實驗性代碼無效(有人知道為什么嗎?)

import tkinter as tk
from PIL import Image, ImageTk
import os

class GUI:
    def __init__(self):
        self.root = tk.Tk()
        self.root.resizable(width=tk.FALSE, height=tk.FALSE)
        self.start_GUI();
        self.root.mainloop();

    def start_GUI(self):
        self.canvas = tk.Canvas(master = self.root, width = 734, height = 429)
        self.canvas.pack(expand = tk.YES, fill = tk.BOTH)
        gif1 = tk.PhotoImage(file = 'background.gif')
        self.canvas.create_image(0, 0, image = gif1)

if __name__ == '__main__':
    rootstart = GUI();

您在顯示圖像時遇到問題(我認為它們不可見)的原因是gif1是局部變量。 一旦start_GUI完成執行,則gif1超出范圍,並且圖像被刪除。 所以您看不到任何圖像,因為無論如何都看不到圖像。 您需要通過執行程序來保留對圖像對象壽命的引用。 在您的示例中,簡單的方法是使它們成為實例變量,例如

self.gif1 = tk.PhotoImage(file = 'background.gif')
self.canvas.create_image(0, 0, image = self.gif1)

要在頂部繪制新圖像,只需執行相同操作,例如

self.gif2 = tk.PhotoImage(file = 'some_foreground_image.gif')
self.canvas.create_image(0, 0, image = self.gif2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM