zoukankan      html  css  js  c++  java
  • 第十一章-虚拟环境和图形界面

    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()
    

      

    人若有恒 无所不成
  • 相关阅读:
    axios核心技术---1.HTTP相关
    Leetcode刷题
    Java入门13---Optional处理null对象
    Java入门12---Stream
    谈谈前后端分离及认证选择
    react监控props的变化
    如何使用懒加载
    CSS文字超出省略
    React的slot插槽
    React 的函数组件和类组件中的props
  • 原文地址:https://www.cnblogs.com/weihuchao/p/6798275.html
Copyright © 2011-2022 走看看