如何解决在哪里可以使用grid方法在Tkinter上存储图像?
我正在使用Tkinter和grid()方法创建一个登录系统,但是我不知道该在哪里放置图像。由于我没有使用类和函数,因此很容易嵌入图像的路径(img = PhotoImage(file = r"C:\\Users\\admin\\Desktop\\Foto\\Haken.png")
img1 = img.subsample(10,10)
,但是,由于我是Python新手,所以我真的不知道将其放置在哪里。当代码更加井井有条时,代码中的路径。这是我尝试过的:
from tkinter import *
from tkinter.ttk import *
class Login_system(Frame):
def __init__(self,parent):
Frame.__init__(self,parent)
self.parent = parent
self.initUI()
def initUI(self):
self.parent.title("Login System Prova")
Label(text = "Surname").grid(row=0,column=0,sticky=W,pady=2)
Label(text = "Your Password").grid(row=1,pady=2)
Label(text = "Your E-Mail").grid(row=2,pady=2)
Entry().grid(row = 0,column=1,pady=2)
Entry().grid(row = 1,pady=2)
Entry().grid(row = 2,pady=2)
Entry().grid(row = 3,pady=2)
Checkbutton(text = "Keep me on-line").grid(row = 4,sticky = W,columnspan= 1)
def main():
root = Tk()
root.geometry("200x150+400+300")
root.resizable(True,True)
global image
image = Frame.PhotoImage(file = r"C:\\Users\\admin\\Desktop\\Foto\\Haken.png")
app = Login_system(root)
root.mainloop()
if __name__ == "__main__":
main()
但是我得到这个错误:
Traceback (most recent call last):
File "C:\Users\admin\Desktop\Python\GUI APP\login_system_new.py",line 40,in <module>
main()
File "C:\Users\admin\Desktop\Python\GUI APP\login_system_new.py",line 34,in main
image = Frame.PhotoImage(file = r"C:\\Users\\admin\\Desktop\\Foto_Marco\\Haken.png")
AttributeError: type object 'Frame' has no attribute 'PhotoImage'
[Finished in 0.5s]
您有什么建议吗?我想将图像放在最右列。
解决方法
如果图像是Login_system
的一部分,则最好将其放在类中。另外,您忘记了在类内指定小部件的父级,因此这些小部件将改为root
的子级。
也避免导入以下模块:
from tkinter import *
from tkinter.ttk import *
在这种情况下,您无法使用tkinter
中的某些小部件,因为它们被ttk
中的小部件覆盖。
以下是根据您的代码修改的示例:
import tkinter as tk
from tkinter import ttk
class Login_system(ttk.Frame):
def __init__(self,parent):
ttk.Frame.__init__(self,parent)
self.initUI()
def initUI(self):
self.master.title("Login System Prova")
ttk.Label(self,text="Surname").grid(row=0,column=0,sticky=tk.W,pady=2)
ttk.Label(self,text="Your Password").grid(row=1,text="Your E-Mail").grid(row=2,pady=2)
ttk.Entry(self).grid(row=0,column=1,pady=2)
ttk.Entry(self).grid(row=1,pady=2)
ttk.Entry(self).grid(row=2,pady=2)
ttk.Entry(self).grid(row=3,pady=2)
ttk.Checkbutton(self,text="Keep me on-line").grid(row=4,columnspan=2)
self.image = tk.PhotoImage(file=r"C:\\Users\\admin\\Desktop\\Foto\\Haken.png").subsample(10,10)
ttk.Label(self,image=self.image).grid(row=0,column=2,rowspan=5,padx=(20,0))
def main():
root = tk.Tk()
#root.geometry("200x150+400+300")
#root.resizable(True,True)
app = Login_system(root)
app.pack(fill='both',expand=1,padx=10,pady=10)
root.mainloop()
if __name__ == "__main__":
main()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。