python - Python tkinter 代码 - 带有导入图像按钮的框架
问题描述
目前,当尝试将图像作为按钮导入时,程序会打开一个空白窗口。无需尝试将图像作为按钮导入,代码可以正常工作。任何人都可以帮助修复此代码或为我指明正确的方向吗?
from tkinter import*
root = Tk()
class app(Tk):
def __init__(self, *args, **kwargs):
Tk.__init__(self, *args, **kwargs)
container = Frame(self)
container.pack(side="top", fill="both", expand = True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
for F in (StartPage, SignIn, SignUp):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(StartPage)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
class StartPage(Frame):
def __init__(self, parent, controller):
Frame.__init__(self, parent)
label = Label(self, text="Start Page")
label.pack(pady=10,padx=10)
img1 = PhotoImage(file="signinbtn.png")
button = Button(self, image=img1,
command=lambda: controller.show_frame(SignIn))
button.pack()
img2 = PhotoImage(file="signupbtn.png")
button2 = Button(self, image=img2, text="Sign Up",
command=lambda: controller.show_frame(SignUp))
button2.pack()
class SignIn(Frame):
def __init__(self, parent, controller):
Frame.__init__(self, parent)
label = Label(self, text="Sign In")
label.pack(pady=10,padx=10)
button1 = Button(self, text="Back to Start Page",
command=lambda: controller.show_frame(StartPage))
button1.pack()
class SignUp(Frame):
def __init__(self, parent, controller):
Frame.__init__(self, parent)
label = Label(self, text="Sign Up")
label.pack(pady=10,padx=10)
button1 = Button(self, text="Back to Start Page",
command=lambda: controller.show_frame(StartPage))
button1.pack()
root.mainloop()
解决方案
空窗口由第二个代码行创建:
root = Tk()
除了这一行,你只有类定义。由于您从不实例化任何类,因此不会运行任何类的代码。
推荐阅读
- cakephp - 迁移到 cakephp-4 后,在 shell 中找不到 Cake\Routing\Router
- amazon-web-services - ECS 任务定义是否与 K8S 中的 POD 规范大致相同
- vue.js - 在命名空间模块中调用使用方括号(计算机属性名称)定义的 Vuex 操作
- r - 使用 ggplotly 删除跟踪信息并控制鼠标悬停在瀑布图的信息上
- android-studio - 如何删除分号后的字符,因为我不能使用 split()
- javascript - TypeError:change.after.val 不是一个函数 firebase
- oop - 此代码中是否正确解释了可导航性?
- spring-boot - Kotlin 原语的 Spring 验证
- ruby-on-rails - 已解决 - Ruby On Rails 中 FactoryBot 构建方法中的 ArgumentError
- html - 聊天框 UI 不使用 react-bootstrap Accordion 滚动