# -*- coding: utf-8 -*-
"""
@author: Roger Liu
"""
import tkinter as tk
#两种类构造方法:
class App1: #tk成为App成员,指向root(master和root等价)
def __init__(self, master):
self.master = master
self.master.geometry('400x200')
self.initWidgets()
def initWidgets(self):
fm = tk.Frame(self.master) #临时变量
fm.pack() #将Frame加载到self.master
tk.Button(fm, text='第一个',command=self.sayhello).pack() #加载到Frame
def sayhello(self):
print('APP1:hello,world')
class App2(tk.Tk): #继承于Tk类
def __init__(self):
super().__init__()
self.initWidgets()
self.geometry('400x200')
def initWidgets(self):
fm = tk.Frame(master=self) #临时变量
fm.pack() #将Frame加载到类
tk.Button(fm, text='第二个',command=self.sayhello).pack() #加载到Frame
def sayhello(self):
print('APP2:hello,world')
root=tk.Tk()
c=App1(root)
print(c.master==root)
#True
#root.destroy()
x=App2()
type(x)
# x.mainloop() #两种方法都会显示两个界面,Puzzling
root.mainloop() #两种方法都会显示两个界面,Puzzling
转载 :
kinter class继承有三种方式。
提醒注意这几种继承的运行方式
一、继承 object
1.铺tk.Frame给parent:
说明:
- self.rootframe = tk.Frame(parent)
- tk.Label(self.rootframe)
-
import tkinter as tk
-
-
class MyApp(object):
-
def __init__(self, parent):
-
self.rootframe = tk.Frame(parent)
-
self.rootframe.pack()
-
-
self.setupUI()
-
-
-
def setupUI(self):
-
tk.Label(self.rootframe, text='标签').pack()
-
-
-
if __name__ == '__main__':
-
root = tk.Tk()
-
MyApp(root) # 注意这句
-
root.mainloop()
2.直接使用root
说明:
- self.root = parent
- tk.Label(self.root)
-
import tkinter as tk
-
-
class MyApp(object):
-
def __init__(self, parent, **kwargs):
-
self.root = parent
-
self.root.config(**kwargs)
-
-
self.setupUI()
-
-
def setupUI(self):
-
tk.Label(self.root, text = '标签').pack()
-
-
-
if __name__ == '__main__':
-
root = tk.Tk()
-
app = test(root)
-
root.mainloop()
二、继承 tk.Tk
-
import tkinter as tk
-
-
class MyApp(tk.Tk):
-
-
def __init__(self):
-
super().__init__()
-
-
self.setupUI()
-
-
-
def setupUI(self):
-
tk.Label(self, text='标签').pack()
-
-
-
if __name__ == '__main__':
-
MyApp().mainloop()
三、继承 tk.Frame
分两种情况
1.有parent
-
import tkinter as tk
-
-
class MyApp(tk.Frame):
-
def __init__(self, parent=None):
-
super().__init__(parent)
-
self.pack()
-
-
self.setupUI()
-
-
-
def setupUI(self):
-
tk.Label(self, text='标签').pack()
-
-
-
if __name__ == '__main__':
-
MyApp(tk.Tk()).mainloop()
-
#MyApp().mainloop() # 也可以这样
注意: self.pack()
2.没有parent
-
import tkinter as tk
-
-
class MyApp(tk.Frame):
-
-
def __init__(self):
-
super().__init__()
-
self.pack()
-
-
self.setupUI()
-
-
-
def setupUI(self):
-
tk.Label(self, text='标签').pack()
-
-
-
if __name__ == '__main__':
-
MyApp().mainloop()
本文转自罗兵博客园博客,原文链接:http://www.cnblogs.com/hhh5460/p/5859475.html,如需转载请自行联系原作者