Python图形界面

一、第一个界面

1. 了解模块代码的组成

  • 导入库.(PySimpleGUI)
  • 定义布局,确定行数
  • 创建窗口
  • 事件循环
  • 关闭窗口
# 1.导入库
import PySimpleGUI as sg# 2.定义布局,确定行数
layout = [[sg.Text('请输入您的信息')],[sg.Text('姓名'),sg.InputText('小帽')],[sg.Text('性别'),sg.InputText('男')],[sg.Text('国籍'),sg.InputText('中国')],[sg.Button('确定'),sg.Button('取消')]
]# 3.创建窗口
window = sg.Window('Python GUI', layout)# 4.事件循环
while True:event, values = window.read()   # 窗口的读取,有两个返回值(1.事件,2.值)if event == None:   # 窗口关闭事件break# 5.关闭窗口
window.close()

二、如何定义窗口返回值 – 事件

1. 窗口关闭事件 。

  • 窗口关闭按钮是一个特殊的按钮,在界面的右上角X
  • 编写方法:
if event==None:#窗口关闭事件break
if event==sg.WIN_CLOSED:#窗口关闭事件break
  • 注意!!!

    • 定义窗口关闭事件是至关重要的,当你忘记定义窗口关闭事件,然后又点击了窗口右上角的X按钮,
    • 它会默默的消耗你100%的CPU。

2. 按钮点击事件

if event=='确认':   #判断事件是否发生print('确认')     #事件发生时要处理执行的任务sg.Popup('执行确认任务')if event=='取消':   #判断事件是否发生print('取消')     #事件发生时要处理执行的任务sg.Popup('执行取消任务')

3. 判断事件是否发生的几种方式

if event=='Exit':sg.Popup('您点击了Exit')break            if event in ('Exit',None):sg.Popup('您点击了Exit或者窗口关闭按钮')breakif event.startswith('确认'):sg.Popup('您点击了Exit**的按钮')breakif event.endswith('确认'):sg.Popup('您点击了**Exit的按钮')break

4. 其他元素事件

  • 像文本元素,输入框,下拉菜单等事件属性默认是关闭的。 当手动设置他们的事件属性enable_events=True为真时,他们也将具有事件属性。
# 以文本元素举例
layout=[[sg.Text('OK',enable_events=True)]]
...
if event=='OK':sg.Popup('文本元素OK的事件属性为真')

5. 总结代码

# 1.导入库
import PySimpleGUI as sg# 2.定义布局,确定行数
layout = [[sg.Text('请输入您的信息')],[sg.Text('姓名',enable_events=True),sg.InputText('小帽')],[sg.Text('性别'),sg.InputText('男')],[sg.Text('国籍'),sg.InputText('中国')],[sg.Button('确认'),sg.Button('取消')]
]# 3.创建窗口
window = sg.Window('Python GUI', layout)# 4.事件循环
while True:event, values = window.read()   # 窗口的读取,有两个返回值(1.事件,2.值)if event == None:   # 窗口关闭事件breakif event == '确认':sg.Popup('执行了确认任务')if event == '取消':sg.Popup('执行了取消任务')if event == '姓名':sg.Popup('这是个文本')# 5.关闭窗口
window.close()

三、窗口读取返回值 – 值

1. 通过列表索引获取返回值-值

list=[1,2,3,4,5]
print(list)
# 输出结果为:[1, 2, 3, 4, 5]
print(list[0])
# 输出结果为:1
  • 那么如何通过列有索引来获取窗口的返回值呢?

    • 方法一:获取界面全部的值 print(values)
    • 方法二:获取界面指定的值 print(values[0]) ,print(values[1])
# 1.导入库
import PySimpleGUI as sg# 2.定义布局,确定行数
layout = [[sg.Text('请输入您的信息')],[sg.Text('姓名'),sg.InputText('小帽')],[sg.Text('性别'),sg.InputText('男')],[sg.Text('国籍'),sg.InputText('中国')],[sg.Button('确认'),sg.Button('取消')]
]# 3.创建窗口
window = sg.Window('Python GUI', layout)# 4.事件循环
while True:event, values = window.read()   # 窗口的读取,有两个返回值(1.事件,2.值)if event == None:   # 窗口关闭事件breakif event == '确认':# print(values)print(values[0])# 5.关闭窗口
window.close()

2. 通过字典的键获取返回值-值

  • 界面默认的返回值是通过列表索引获得指定值
  • 但是当给元素设定唯一标识符key
  • 则该元素无法通过列表索引
  • 只能通过字典key进行索引。
  • print(values[key])
# 1.导入库
import PySimpleGUI as sg# 2.定义布局,确定行数
layout = [[sg.Text('请输入您的信息')],[sg.Text('姓名'),sg.InputText('小帽', key='name')],[sg.Text('性别'),sg.InputText('男')],[sg.Text('国籍'),sg.InputText('中国')],[sg.Button('确认'),sg.Button('取消')]
]# 3.创建窗口
window = sg.Window('Python GUI', layout)# 4.事件循环
while True:event, values = window.read()   # 窗口的读取,有两个返回值(1.事件,2.值)if event == None:   # 窗口关闭事件breakif event == '确认':print(values['name'])# 5.关闭窗口
window.close()

四、如何设定主题

1. 了解主题

  • 主题 theme 包括:窗口的背景颜色,文本Text颜色,按钮的字体颜色和按钮颜色等等。
  • 默认主题:“Dark Blue 3”

2. 如何直观查看有效主题

  • 方法如下:
import PySimpleGUI as sg #导入库
sg.theme_previewer()        #查看有效主题

3. 如何获取有效主题

import PySimpleGUI as sg#导入库
print(sg.theme_list()) #获取主题名称列表,并打印出来

4. 如何设定主题

  • 设定方法:
sg.theme('主题名称')
# 如何随机主题:
sg.theme('')

5. 总结代码

# 导入库
import PySimpleGUI as sg
# sg.theme_previewer()
# print(sg.theme_list())
# sg.theme('DarkBlue11')
sg.theme('')
sg.Popup('弹窗演示')

五、如何修改主题

1. 如何获取主题的部分设置

  • 获取方式:print(sg.theme_background_color())
  • 常用到的一些主题属性:
theme_background_color                 #主题_背景_颜色theme_border_width                         #主题_边框_宽度theme_button_color                          #主题_按钮_颜色theme_element_background_color  #主题_元素_背景_颜色theme_element_text_color               #主题_元素_文本_颜色theme_input_background_color       #主题_输入框_背景_颜色theme_input_text_color                    #主题_输入框_文本_颜色theme_progress_bar_border_color#主题_进度_栏_边框_颜色theme_progress_bar_color              #主题_进度_栏_颜色theme_slider_border_width             #主题_滑块_边框_颜色theme_slider_color                          #主题_滑块_颜色theme_text_color                             #主题_文本_颜色theme_text_element_background_color #主题文本元素背景颜色

2. 如何修改主题的部分设置

import PySimpleGUI as sg
sg.theme('LightBlue2')
sg.Popup('弹窗演示')
# 修改部分主题设定
sg.theme_button_color(('black','#7186C7'))
sg.popup('修改后的LightGreen3 Theme','按钮文字是黑色的')

3. 总结代码

# 导入库
import PySimpleGUI as sg
sg.theme('LightBlue2')
sg.Popup('弹窗演示')
# print(sg.theme_button_color()) # ('#FFFFFF', '#7186C7') 按键文字的参数,按键背景的参数
sg.theme_button_color(('black','#7186C7'))
sg.popup('演示弹窗','按键字体变黑色')

六、如何自定义窗口

1. 用for循环快速定义元素

# for循环遍历字符串
a='djfsdldkfj'
for i in a:                                    print(i)# for循环遍历列表
a=[1,23,'A','程序员']
for i in a:print(i)                                  layout=[[sg.In(i) for i in 'ABCD']]
# 用for循环遍历字符串的形式布局layout=[[[sg.In(i)] for i in ['北京','上海','深圳']]]
#用for循环遍历列表的形式布局

2. 布局和元素的另一种组合方式

# 最常见的布局定义方式
layout=[[sg.Text('请输入基本信息')][sg.Text('姓名'),sg.In()],[sg.Text('性别'),sg.In()],[sg.Text('籍贯'),sg.In()],[sg.B('确认'),sg.B('取消')]]# 用+号拼接的方式:
layout=[[sg.Text('请输入基本信息')],[sg.Text('姓名')]+[sg.In()]]+[[sg.Text('性别')]+[sg.In()]]+[[sg.Text('国籍'),sg.In()],[sg.B('确认'),sg.B('取消')]]   #在同一个布局里也可以用加号拼接。

3. 总结代码

# 1.导入库
import PySimpleGUI as sg# 2.定义布局,确定行数
# layout = [
#     [sg.Text(i) for i in 'abcd'],
#     [[sg.In(i)] for i in ['纽约','伦敦','巴黎','东京']]
# ]layout=[[sg.Text('请输入基本信息')],[sg.Text('姓名')]+[sg.In()]]+[[sg.Text('性别')]+[sg.In()]]+[[sg.Text('国籍'),sg.In()],[sg.B('确认'),sg.B('取消')]]# 3.创建窗口
window = sg.Window('Python GUI', layout)# 4.事件循环
while True:event, values = window.read()   # 窗口的读取,有两个返回值(1.事件,2.值)if event == None:   # 窗口关闭事件breakif event == '确认':print(values['name'])# 5.关闭窗口
window.close()

【GUI】Python图形界面(一)相关推荐

  1. python日历gui_python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例...

    PyQt5日期时间控件QDateTimeEdit介绍 QDateTimeEdit是一个允许用户编辑日期时间的控件,可以使用键盘上的上下键头按钮来增加或减少日期的时间值,QDateTimeEdit通过s ...

  2. python 动态调整控件大小_python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例...

    PyQt5动态(可拖动控件大小)布局控件QSplitter简介 PyQt还提供了特殊的布局管理器QSplitter.它可以动态地拖动子控件之间的边界,算是一个动态的布局管理器,QSplitter允许用 ...

  3. python嵌套html开发gui_python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例...

    PyQt5布局控件QFormLayout简介 QFormLayout是label-field式的表单布局,顾明思议,就是实现表单方式的布局,表单是提示用户进行交互的一种模式,主要有两列组成,第一列用于 ...

  4. python menu实例_python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例...

    PyQt5菜单栏控件QMenuBar介绍 QMenuBar在QMainWindow对象的标题栏下方,水平的QMenuBar被保留显示QMenu对象 QMenuBar类提供了一个可以包含一个或多个QAc ...

  5. python 图形界面窗体设计_Python 图形界面(GUI)设计

    原博文 2015-03-28 09:10 − 不要问我为什么要用 Python 来做这种事,我回到"高兴咋地"也不是不可以,总之好奇有没有好的解决方案.逛了一圈下来,总体上来说,P ...

  6. python界面设计实例qt_python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例...

    在默认情况下,我们使用PyQt5创建出来的窗口和部件都是默认的样式,虽然谈不上很丑,但是也毫无美感可言.其实,在PyQt5中,我们可以有较高的自由度来自定义窗口和各种小部件的样式,通过自定义这些样式, ...

  7. python界面开发工具-python图形界面开发用什么

    作为Python开发者,你迟早都会用到图形用户界面来开发应用.本文将推荐一些 Python GUI 框架,希望对你有所帮助. Python 的 UI 开发工具包 Kivy(推荐学习:Python视频教 ...

  8. qpython3可视图形界面_python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法...

    QWidget基本介绍 基础窗口控件QWidget类是所有用户界面对象的基类,所有的窗口或者控件都直接或者间接的继承自QWidget类. 窗口坐标系统 PyQt使用统一的坐标系统来定位窗口控件的位置和 ...

  9. python图形界面教程_图形教程

    python图形界面教程 众所周知,我们可以借助Java库制作游戏,这些库为我们提供制作游戏所需的图形. 因此,今天我将开始一个关于Java图形的非常新的部分. 我之前曾发表过有关如何制作所得税计算器 ...

最新文章

  1. 一键生成CSDN文章的思维导图目录
  2. 关于召开全国大学生智能车竞赛--航天智慧物流项目
  3. A TLS packet with unexpected length was received 解决方法
  4. Android官方网站
  5. SAP中PDF文件本地保存方法
  6. 这些年,NLP常见的预训练模型剖析
  7. AI「抄」代码无罪?GitHub Copilot拿用户的开源代码改一改就去挣钱!
  8. Java中的PriorityQueue优先级队列
  9. redis的安装和命令的使用(史上最全命令集合)
  10. 《深度学习》李宏毅 -- task7总结
  11. linux log变色
  12. 推荐几款好用实用的宝藏软件。记得收藏
  13. 如何设置计算机休眠播放幻灯片,如何设置电脑休眠屏保幻灯片
  14. 基于android下的amr转mp3
  15. pe如何查看计算机用户名,用PE如何查看系统版本
  16. 常见笔记本CPU型号参数和性能对比一览表
  17. Spring基本使用
  18. C++程序设计案例实训教程第9章
  19. Eclipse Maven 依赖包找不到源代码及javadoc
  20. 如何在Dev-c++中打c语音的代码

热门文章

  1. 泰安学业水平考试计算机试卷,山东省泰安市2020年初中物理学业水平考试试题【含答案】...
  2. Realvnc虚拟模式下更改分辨率
  3. 青蛙换位问题之递归回溯法
  4. SIP与RTP综合应用(转)
  5. 【容易打工网】办公室礼仪 职场生存十八定律
  6. 日志,Agent,网络流量分析-性能监控的三大流派详解
  7. 技术型企业的商业模式
  8. Mac 卸载应用程序(AppCleaner)
  9. 如何做提升工作效率能力的PPT课件?
  10. 微信支付sdk详细使用