【问题标题】:python tkinter gui issue with images and buttons图像和按钮的python tkinter gui问题
【发布时间】:2018-08-28 11:54:18
【问题描述】:

我正在尝试设计一个脚本,以使用默认图像和按钮初始化 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()

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

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

    您永远不会在 userDisplay 的实例上调用 packplacegrid。由于它是Frame 的实例,因此只有在使用这些几何管理器之一将其添加到屏幕后才能看到它。

    假设您希望 userDisplay 填满整个窗口,请将其添加到 main 内部:

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

    【讨论】:

    • 我添加了它,现在它显示了按钮和图像所在的透明空间。假设目录是正确的,我是不是也缺少显示 GIF 文件的内容?
    • @BenRoux:image 选项不采用路径名。互联网上有很多关于如何使用带有标签的图像的示例。
    猜你喜欢
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多