[英]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.