第十一章-虚拟环境和图形界面
1 virtualenv
在开发程序的过程中, 可能要同时开发多个应用程序, 可能需要的运行环境不同, 这个时候就需要virtualenv来形成一个"隔离"的环境
安装virtualenv
pip3 install virtualenv
创建一个python运行环境
virtualenv --no-site-packages 环境名字
其中--no-site-packages表示Python环境中多有第三方的环境都不会被复制过去
进入该环境
source 环境名字/bin/activate
进入环境之后, 就可以正常安装需要的环境了
安装只会在这个环境里面an安装, 不会影响其他Python环境
退出环境
deactivate
2 图像界面
在Python中, 有很多第三方库支持图形界面
常见的有Tk, wxWidgetss, Qt, GTK
在Tk中有Tkinter
Tk是一个图形库, 支持多个操作系统, 使用Tcl语言进行开发的
Tk会调用系统本地的GUI接口
所有Widget容器的都需要继承自Frame
初始化的时候需要使用pack()或者grid()来将WIdget加入到父容器中, pack是最简单的布局, grid可以实现更复杂的布局
创建label标签只需要用 Label(self, text=文本信息) 然后使用pack将其绑定到self
同理创建Button也是同样的操作
创建一个基本的GUI例子如下
from tkinter import *
class Application(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.pack()
self.createWidgets()
def createWidgets(self):
self.helloLabel = Label(self, text='Hello, world!')
self.helloLabel.pack()
self.quitButton = Button(self, text='Quit', command=self.quit)
self.quitButton.pack()
app = Application()
# 设置窗口标题:
app.master.title('Hello World')
# 主消息循环:
app.mainloop()
再设计一个GUI
在界面中输入信息, 点击按钮只有, 弹出信息
具体的需要生成一个输入框, 使用Entry来实现
获取该输入框的值 需要使用 对象.get()的方式得到, 如果需要设定默认值, 需要加上 or 获得默认值
弹窗消息是需要导入 tkinter.messagebox
使用messagebox.showinfo()来设定窗口信息
具体代码如下
from tkinter import *
import tkinter.messagebox as messagebox
class Application(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.pack()
self.createWidgets()
def createWidgets(self):
self.nameInput = Entry(self)
self.nameInput.pack()
self.alertButton = Button(self, text='Hello', command=self.hello)
self.alertButton.pack()
def hello(self):
name = self.nameInput.get() or 'world'
messagebox.showinfo('Message', 'Hello, %s' % name)
app = Application()
# 设置窗口标题:
app.master.title('Hello World')
# 主消息循环:
app.mainloop()
人若有恒 无所不成