目录
创建一个简单的wxPython程序
import wx
app = wx.App() # 创建应用程序对象
frame = wx.Frame(None, title = "Hello, World!") #创建一个框架
frame.Show(True) # 显示窗口
app.MainLoop() # 进入事件循化
运行结果如下所示:
利用我们之前讲的面向对象的方法,可以对这个代码进行修改,修改之后的代码如下所示:
import wx
class MyApp(wx.App): # 从App类里生子类
def OnInit(self): # 定义初始化方法
frame = wx.Frame(None, title="Hello, World!") # 创建一个框架
frame.Show() # 显示窗口
return True
if __name__ == '__main__':
app = MyApp() # 执行初始化方法
app.MainLoop()
具体的使用方法,如下所示:
import wx
class Frame1(wx.Frame):
def __init__(self, superior): # 修改了原来Frame子类的__init__()方法
wx.Frame.__init__(self, parent=superior, title="一个可以输入的文本框", pos=(100, 200), size=(350, 200))
# 进行窗口标题、位置、大小的设置
panel = wx.Panel(self) # 通过Panel、TextCtrl增加一个文本输入框的位置
text1 = wx.TextCtrl(panel, value="Hello, World!", size=(350, 200))
# 把初始的文本内容设置为Hello, World!
if __name__ == '__main__':
app = wx.App()
frame = Frame1(None)
frame.Show(True)
app.MainLoop()
运行结果如下所示:
具体代码如下所示:
import wx
class Frame1(wx.Frame):
def __init__(self, superior): # 修改了原来Frame子类的__init__()方法
wx.Frame.__init__(self, parent=superior, title="一个可以输入的文本框", pos=(100, 200), size=(350, 200))
# 进行窗口标题、位置、大小的设置
self.panel = wx.Panel(self) # 通过Panel、TextCtrl增加一个文本输入框的位置
# text1 = wx.TextCtrl(self.panel, value="Hello, World!", size=(350, 200))
# 把初始的文本内容设置为Hello, World!
self.panel.Bind(wx.EVT_LEFT_UP, self.OnClick)
# 将鼠标左键抬起事件(EVT_LEFT_UP)绑定到派生出的子类onClick()方法上
def OnClick(self, event):
posm = event.GetPosition() # 获得鼠标单击的位置
wx.StaticText(parent=self.panel, label="Hello, World!", pos=(posm.x, posm.y))
# 放置一个静态的文本文件
if __name__ == '__main__':
app = wx.App()
frame = Frame1(None)
frame.Show(True)
app.MainLoop()
运行结果如下所示:
菜单事件 – wx.EVT_MENU
…
#绑定事件处理器
self.Bind(wx.EVT_MENU,self.OnClickBigger,biggerItem)
self.Bind(wx.EVT_MENU,self.OnClickQuit,id=wx.ID_EXIT)
…
#事件处理器
def OnClickBigger(self,e):
pass
def OnClickQuit(self,e):
self.Close()
…
具体实现如下代码所示,因为后续还会详细分析这段代码,就不展示运行结果。
import wx
class Frame1(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, title="Hello World in wxPython")
panel = wx.Panel(self)
sizer = wx.BoxSizer(wx.VERTICAL)
self.text1 = wx.TextCtrl(panel, value="Hello, World!", size=(200, 180), style=wx.TE_MULTILINE)
# 创建了一个TextCtrl实例,也就是在panel中添加了一个文本框
sizer.Add(self.text1, 0, wx.ALIGN_TOP | wx.EXPAND)
button = wx.Button(panel, label="Click Me")
# 创建了一个Button实例,也就是在panel中添加了一个按钮
sizer.Add(button)
panel.SetSizerAndFit(sizer)
panel.Layout()
self.Bind(wx.EVT_BUTTON, self.OnClick, button)
# 把Button事件绑定在frame的OnClick()方法上
self.Show(True)
def OnClick(self, text):
self.text1.AppendText("\nHello, World!") # 添加字符串
if __name__ == '__main__':
app = wx.App()
frame = Frame1(None)
app.MainLoop()
具体代码如下所示:
import wx
class Frame1(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, title="Hello World in wxPython")
panel = wx.Panel(self) # 首先创建自动调用尺寸的容器
sizer = wx.BoxSizer(wx.VERTICAL) # 第二是创建一个sizer,这是一个BoxSizer的实例,方向是垂直方向
self.text1 = wx.TextCtrl(panel, value="Hello, World!", size=(200, 180), style=wx.TE_MULTILINE)
# 第三是创建窗口组件,创建了一个TextCtrl实例,也就是在panel中添加了一个文本框
sizer.Add(self.text1, 0, wx.ALIGN_TOP | wx.EXPAND)
# 第四是使用add方法加到sizer
button = wx.Button(panel, label="Click Me")
# 第三是创建窗口组件,创建了一个Button实例,也就是在panel中添加了一个按钮
sizer.Add(button)
panel.SetSizerAndFit(sizer)
# 最后调用容器的SetSizer()方法
panel.Layout()
self.Bind(wx.EVT_BUTTON, self.OnClick, button)
# 把Button事件绑定在frame的OnClick()方法上
self.Show(True)
def OnClick(self, text):
self.text1.AppendText("\nHello, World!") # 添加字符串
if __name__ == '__main__':
app = wx.App()
frame = Frame1(None)
app.MainLoop()
运行结果如下所示:
具体代码如下所示:
import sys
from PyQt5 import QtWidgets
class TestWidget(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Hello World!")
self.outputArea = QtWidgets.QTextBrowser()
self.helloButton = QtWidgets.QPushButton("Click Me")
self.layout = QtWidgets.QVBoxLayout()
self.layout.addWidget(self.outputArea)
self.layout.addWidget(self.helloButton)
self.setLayout(self.layout)
self.helloButton.clicked.connect(self.sayHello)
def sayHello(self):
self.outputArea.append("Hello, World!")
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
testWidget = TestWidget()
testWidget.show()
sys.exit(app.exec_())
运行结果如下所示:
优点:
缺点:
具体代码如下所示:
import tkinter as tk
class Tkdemo(object):
def __init__(self):
self.root = tk.Tk()
self.txt = tk.Text(self.root, width=30, height=10)
self.txt.pack()
self.button = tk.Button(self.root, text='Click me', command=self.sayhello)
self.button.pack()
def sayhello(self):
self.txt.insert(tk.INSERT, "Hello, World!\n")
d = Tkdemo()
d.root.mainloop()
运行结果如下所示:
优点:
缺点:
在此就不展示PyGTK的代码,感兴趣的同学可以自己去学习。
优点:
缺点: