python tkinter gui问题与图像和按钮

时间:2018-03-19 19:43:01

标签: python tkinter

我有一个脚本,我试图设计初始化带有默认图像和按钮的GUI。当按下按钮时,它会调用getRandomCard函数,并用随机文件替换当前图像(例如:1c,2s,5d等)。它们是扑克牌的GIF文件。

我正在努力获取第一个图像(默认占位符)和运行程序时出现的按钮。我目前正在获得一个空窗口,里面没有小部件。我错过了哪些代码,或者哪些代码没有写好?

import random
from tkinter import *

class randomCards(object):
    def __init__(self, rank, suit):
        suitlst = ["s", "h", "d", "c"]
        self.rank = random.randint(1,13)
        self.suit = random.choice(suitlst)
    def getRandomCard(self):
        fileString = "DECK/" + str(self.rank) + str(self.suit)
        userDisplay.imgLabel = Label(window, image = fileString).pack(side= "left")
        userDisplay.imgLabel.pack()

class userDisplay(Frame):
    def __init__(self, window):
        self.master = window
        window.title = "Random Images"
        self.imgLabel = Label(window, image = "DECK/b.gif")
        self.imgLabel.pack(side = "left")
        self.cardButton = Button(window, text = 'Show Random Card', command=lambda : randomCards.getRandomCard(self))
        self.cardButton.pack()

def main():
    root = Tk()
    interface = userDisplay(root)

main()

1 个答案:

答案 0 :(得分:1)

  

我正在努力获取第一个图像(默认占位符)和运行程序时出现的按钮。我目前正在获得一个空窗口,里面没有小部件。我错过了哪些代码,或者哪些代码没有写好?

您永远不会在pack的实例上致电placegriduserDisplay。由于它是Frame的一个实例,因此只有在使用其中一个几何管理器将其添加到屏幕后才能看到它。

假设您希望userDisplay填充整个窗口,请在main内添加:

interface.pack(fill="both", expand=True)