python GUI入门(一入门介绍)

article/2025/9/22 23:57:21

CUI: 命令行界面,conmmand line user Interface
GUI: Graphical User Interface

1、python常用的主要跨平台图形用户界面库

1.1 Tkinter

python自带的GUT库,“官方支持”,无须进行额外的下载安装,只要导入tkinter包即可使用。
个人不建议大家学习使用,因为Tkinter没有提供一个图形界面设计器。构建一个GUI界面布局,要自己写代码非常浪费时间。


import tkinter#制作窗口
root = tkinter.Tk()
root.title("Python GUI")
root.geometry("360x240")#制作输入框
input_box = tkinter.Entry(width=40)
input_box.place(x=10, y=100)#制作文本label
input_label = tkinter.Label(text="文本元素label")
input_label.place(x=10, y=70)#制作按钮
button = tkinter.Button(text="提交")
button.place(x=10, y=130)#窗口
root.mainloop()

1.2 PyQt

PyQt是跑一趟红编程语言和QT库的成功融合。
作为python的一个模块,不完全统计有620多个类和6000多个函数和方法,
QT库是目前最强大的库之一。QT本身是一个扩展的C++ GUI应用开发框架,跨平台使用。
pyQT开元协议 GPLV3许可证,替代产品为pySide2
它有一个QT设计器可以发方便我们进行页面的布局,

import sys
from PyQt5  import QtWidgets # pip install pyqt5class App(QtWidgets.QApplication):def __init__(self, sys_argv):super(App, self).__init__(sys_argv)self.build_ui()def build_ui(self):# build a main GUI windowself.main_window = QtWidgets.QMainWindow()self.main_window.setWindowTitle('App')self.main_window.show()# add a label to the main windowlabel = QtWidgets.QLabel('Label')self.main_window.setCentralWidget(label)# add a toolbar with an action button to the main windowaction = QtWidgets.QAction('Toolbar action', self)toolbar = QtWidgets.QToolBar()toolbar.addAction(action)self.main_window.addToolBar(toolbar)# add a status bar to the main windowstatus_bar = QtWidgets.QStatusBar()status_bar.showMessage('Status bar')self.main_window.setStatusBar(status_bar)if __name__ == '__main__':app = App(sys.argv)sys.exit(app.exec_())

1.3 WxPython

WxPython是Python语言的一套优秀的GUI图形库,允许python程序员创建完成的功能健全的gui用户界面。
WxPython是作为有效的跨平台GUI库wxwidgets的python封装和python模块的方式提供给用户的

import wx  #pip install wxpythonclass LoginFrame(wx.Frame):"""登录窗口"""def __init__(self, parent, id, title, size):# 初始化,添加控件并绑定事件wx.Frame.__init__(self, parent, id, title)self.SetSize(size)#自动调节窗口大小self.Center()#设置登录弹窗在桌面中心self.serverAddressLabel = wx.StaticText(self, label="Server Address", pos=(10, 50), size=(120, 25))self.userNameLabel = wx.StaticText(self, label="UserName", pos=(40, 100), size=(120, 25))self.serverAddress = wx.TextCtrl(self, pos=(120, 47), size=(150, 25),style=wx.TE_PROCESS_TAB)self.userName = wx.TextCtrl(self, pos=(120, 97), size=(150, 25),style=wx.TE_PROCESS_TAB)self.loginButton = wx.Button(self, label='Login', pos=(80, 145), size=(130, 30))# 绑定登录方法self.loginButton.Bind(wx.EVT_BUTTON, self.login)self.Show()#显示以上控件def login(self, event): passif __name__ == '__main__':app = wx.App()#实例化一个主循环LoginFrame(None, -1, title="Login", size=(320, 250))app.MainLoop()#启动主循环

2、pySimpleGui

2.1 简介:

许可证: GNU Lesser General Public License (LGPL 3) +.较宽松公共许可证。

端口维护:(注意!!目前维护的有4个端口)

  • PySimpleGUI–based on Tkinter 100%完成

  • PySimpleGUIQt–based on PySID2 接近完成开发

  • PySimpleGUIWx–based on wxpython 预发布阶段,

  • PySimpleGUIWeb–based on Remi 通过浏览器运行python代码 预发布

发布版本:

1.0.9 July 10, 2018 - Initial Release

4.29.0 25-Aug-2020

作者开发设计PSC这个项目的主要目的:

就是让程序员从繁重的代码中解脱出来。用少量代码,更人性化的方式进行GUI布局。

以tkinter为例:

PySimpleGUI封装了tkinter,这样就可以获得所有相同的部件元素,

但是是以简单,高效的方式设计界面。


import tkinter#制作窗口
root = tkinter.Tk()
root.title("Python GUI")
root.geometry("360x240")#制作输入框
input_box = tkinter.Entry(width=40)
input_box.place(x=10, y=100)#制作文本label
input_label = tkinter.Label(text="文本元素label")
input_label.place(x=10, y=70)#制作按钮
button = tkinter.Button(text="提交")
button.place(x=10, y=130)#窗口
root.mainloop()

2.2 pysimpleGui优势

为什么选择PySimpleGUI开发GUI界面,PySimpleGUI有什么优势

  • 学习一样,会四样。

    PySimpleGUI体系封装了tkinter、Qt、WxPython和Remi,这样就可以获得所有相同的部件元素,例如常见的按钮,弹窗,滑块,下拉菜单等。
    但是布局设计(交互方式)使用的是更简单,更人性化的方法。帮助我们创建和管理GUI部件元素,提供一个简单、高效的界面。

代码演示:

import PySimpleGUI   as sg  
#import PySimpleGUIQt as sg
#import PySimpleGUIWx as sg
#import PySimpleGUIWeb as sglayout=[[sg.Text('   '*7),sg.Text('个人信息收集界面')],
[sg.Text('姓名'),sg.InputText('例如   王  海洋',key='-NAME-')],
[sg.Text('性别'),sg.InputText('男',key='-SEX-')],
[sg.Text('电话'),sg.InputText('188-8888-8888',key='-TEL-')],
[sg.Button('确认'),sg.Text('   '*21),sg.Button('提交')]
]window=sg.Window('信息收集',layout,keep_on_top=True)while True:event,values=window.read()if event==None:breakif event=='确认':# showmessage=sg.Popup('您提交的信息如下,请确认!','姓名:'+values['-NAME-'],'性别:'+values['-SEX-'],'电话:'+values['-TEL-'],keep_on_top=True)if event=='提交':sg.Popup(values['-NAME-']+'的信息已经提交了,感谢使用!',keep_on_top=True)window.close()
  • 代码简单,1/2到1/10之一的代码量作为底层框架
  • 接受Python学习一周内可以开始学习PSG这个库了
  • 创建与直接使用tkinter、Qt、WxPython和Remi创建的窗口外观和操作完全相同的窗口。
  • 无回调函数。
  • 可以访问几乎所有底层GUI框架的小部件
  • 内置Debugger(调试器)

安装相关模块

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple XX库名

pip install PySimpleGUI 
pip install PySimpleGUIQt
pip install PySimpleGUIWx
pip install PySimpleGUIWeb 
或
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple   PySimpleGUI 
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple   PySimpleGUIQt
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple   PySimpleGUIWx
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple   PySimpleGUIWeb 

3、第一个自定义界面

3.1 第一个界面(弹窗)

  • 单行文本

sg.Popup('第一行文本')
  • 多行文本

sg.Popup('第一行文本','第二行文本','第三行文本')
  • 多行文本快速实现
import PySimpleGUI as sg
txt ='''
Python之禅 by Tim Peters优美胜于丑陋(Python 以编写优美的代码为目标)明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)可读性很重要(优美的代码是可读的)
'''
sg.Popup(txt)

3.2 模板代码的组成

#1) 导入库
import PySimpleGUI as sg#2) 定义布局,确定行数。一个中括号代表一行
layout=[[],[],[]]#3) 创建窗口
window=sg.Window('Python GUI',layout) # 第一个参数是窗体的标题,第二个参数定义的布局#4) 事件循环
while True:event,values=window.read() #窗口的读取,有两个返回值(1.事件  2.值)print(event,values)if event==None:  #窗口关闭事件break#5) 关闭窗口
window.close()

案例:

#1) 导入库
import PySimpleGUI as sg#2) 定义布局,确定行数。一个中括号代表一行
layout=[[sg.Text("请输入基本信息!")],[sg.Text("姓名"),sg.Input("darly")],  #Input输入框中的参数是默认参数[sg.Text("性别"),sg.InputText("男")], #[sg.Text("国籍"),sg.In("中国")],      # In是input的缩写[sg.Button("确认"), sg.B("取消")]]#3) 创建窗口
window=sg.Window('AutoTestToo',layout) # 第一个参数是窗体的标题,第二个参数定义的布局#4) 事件循环
while True:event,values=window.read() #窗口的读取,有两个返回值(1.事件  2.值)print(event,values)if event==None:  #窗口关闭事件break#5) 关闭窗口
window.close()

在这里插入图片描述

4、窗口读取返回值——事件

4.1 事件

  • 窗口关闭事件
  • 按钮点击事件
  • 其他元素事件

4.2 窗口关闭事件

窗口关闭按钮是一个特殊的按钮,在界面的右上角X
注意:定义窗口关闭事件是至关重要的当你忘记定义窗口关闭事件,然后又点击了窗口右上角的X按钮,它会默默的消耗你100%CPU.

窗口关闭事件有两种方式:

      if event==None:#窗口关闭事件break
      if event==sg.WIN_CLOSED:#窗口关闭事件break

4.3 按钮事件

 	if event=='确认':   #判断事件是否发生print('确认')     #事件发生时要处理执行的任务sg.Popup('执行确认任务')if event=='取消':   #判断事件是否发生print('取消')     #事件发生时要处理执行的任务sg.Popup('执行取消任务')
#1) 导入库
import PySimpleGUI as sg#2) 定义布局,确定行数。一个中括号代表一行
layout=[[sg.Text("请输入基本信息!")],[sg.Text("姓名"),sg.Input("darly")],  #Input输入框中的参数是默认参数[sg.Text("性别"),sg.InputText("男")], #[sg.Text("国籍"),sg.In("中国")],      # In是input的缩写[sg.Button("确认"), sg.B("取消")]]#3) 创建窗口
window=sg.Window('AutoTestToo',layout) # 第一个参数是窗体的标题,第二个参数定义的布局#4) 事件循环
while True:event,values=window.read() #窗口的读取,有两个返回值(1.事件  2.值)print("读取窗口:",event,values)if event==None:  #窗口关闭事件breakif event == '确认':  # 判断事件是否发生print('确认')  # 事件发生时要处理执行的任务sg.Popup('执行确认任务')if event == '取消':  # 判断事件是否发生print('取消')  # 事件发生时要处理执行的任务sg.Popup('执行取消任务')#5) 关闭窗口
window.close()

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

if event=='Exit':sg.Popup('您点击了Exit')break 
     if event in ('Exit',None):sg.Popup('您点击了Exit或者窗口关闭按钮')break

执行任务中模糊查询:任务名称开始字符

    if event.startswith('Exit'):   # 任务名称以Exit开头的任务sg.Popup('您点击了Exit**的按钮')break

执行任务中模糊查询:任务名称结束字符

     if event.endswith('Exit'):   # 任务名称以Exit结尾的任务sg.Popup('您点击了**Exit的按钮')break

4.5 其他元素事件

像文本元素,输入框,下拉菜单等事件属性默认是关闭的。
当手动设置他们的事件属性enable_events=True为真时,他们也将具有事件属性。

#1) 导入库
import PySimpleGUI as sg#2) 定义布局,确定行数。一个中括号代表一行
layout=[[sg.Text("请输入基本信息!")],[sg.Text("姓名",enable_events=True),sg.Input("darly")],  #Input输入框中的参数是默认参数[sg.Text("性别"),sg.InputText("男")], #[sg.Text("国籍"),sg.In("中国")],      # In是input的缩写[sg.Button("确认"), sg.B("取消")]]#3) 创建窗口
window=sg.Window('AutoTestToo',layout) # 第一个参数是窗体的标题,第二个参数定义的布局#4) 事件循环
while True:event,values=window.read() #窗口的读取,有两个返回值(1.事件  2.值)print("读取窗口:",event,values)if event==None:  #窗口关闭事件breakif event == '确认':  # 判断事件是否发生print('确认')  # 事件发生时要处理执行的任务sg.Popup('执行确认任务')if event == '取消':  # 判断事件是否发生print('取消')  # 事件发生时要处理执行的任务sg.Popup('执行取消任务')if event == "姓名":print("你点击了姓名lable标签")sg.Popup("请不要点击lable标签")#5) 关闭窗口
window.close()

5、窗口读取返回值——值

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

获取界面全部的值:print(values)获取界面指定值print(values[0], valuese[1]…)

#1) 导入库
import PySimpleGUI as sg#2) 定义布局,确定行数。一个中括号代表一行
layout=[[sg.Text("请输入基本信息!")],[sg.Text("姓名",enable_events=True),sg.Input("darly")],  #Input输入框中的参数是默认参数[sg.Text("性别"),sg.InputText("男")], #[sg.Text("国籍"),sg.In("中国")],      # In是input的缩写[sg.Button("确认"), sg.B("取消")]]#3) 创建窗口
window=sg.Window('AutoTestToo',layout) # 第一个参数是窗体的标题,第二个参数定义的布局#4) 事件循环
while True:event,values=window.read() #窗口的读取,有两个返回值(1.事件  2.值)if event==None:  #窗口关闭事件breakif event == '确认':  # 判断事件是否发生print(values)print(values[0])print(values[1])sg.Popup('执行确认任务')#5) 关闭窗口
window.close()

5.2通过字典返回值values

界面默认的返回值是通过列表索引获取指定值
但当给元素设定唯一标识符Key,则该元素无法通过列表索引,只能通过字典key进行索引print(values[key])

#1) 导入库
import PySimpleGUI as sg#2) 定义布局,确定行数。一个中括号代表一行
layout=[[sg.Text("请输入基本信息!")],[sg.Text("姓名",enable_events=True),sg.Input("darly")],  #Input输入框中的参数是默认参数[sg.Text("性别",),sg.InputText("男",key="gender")], #[sg.Text("国籍"),sg.In("中国")],      # In是input的缩写[sg.Button("确认"), sg.B("取消"),sg.B("打印")]]#3) 创建窗口
window=sg.Window('AutoTestToo',layout) # 第一个参数是窗体的标题,第二个参数定义的布局#4) 事件循环
while True:event,values=window.read() #窗口的读取,有两个返回值(1.事件  2.值)if event==None:  #窗口关闭事件breakif event=="打印":print(values)print(values["gender"])#5) 关闭窗口
window.close()

在这里插入图片描述

6、自定义主题

6.1了解主题

 - 主题theme包括: 窗口的背景颜色,文本Text颜色,按钮的字体颜色和按钮颜色等等。- 默认主题:`"Dark Blue 3" `   	- 如何直观查看有效主题?
import PySimpleGUI as sgsg.theme_previewer()

在这里插入图片描述

6.2 如何获取有效主题。

	import PySimpleGUI as sgprint(sg.theme_list()) 

在这里插入图片描述

6.3设定主题

#1) 导入库
import PySimpleGUI as sgsg.theme("DarkTeal11")  # 参数是获取的有效主题中的主题名称sg.Popup("弹窗演示主题设置")

在这里插入代码片在这里插入图片描述

6.4 随机主题(当参数为空符串时,系统随机配置主题)

#1) 导入库
import PySimpleGUI as sgsg.theme("DarkTeal11")  # 参数是获取的有效主题中的主题名称sg.Popup("弹窗演示主题设置")sg.theme("")     #当参数为空字符串时,系统会随机配置相应的主题
sg.Popup("随机主题弹窗演示")

6.5修改主题部分设置

 'LightGreen3': {'BACKGROUND': '#A8C1B4',               # 主题背景颜色设置,LightGreen3为主题名称'TEXT': 'black',                         # 文本颜色设计'INPUT': '#DDE0DE',                      # 当行输入框底纹颜色设定'SCROLL': '#E3E3E3',                     # 滚轮颜色设置'TEXT_INPUT': 'black',                   # 单行输入框中文本颜色设定'BUTTON': ('white', '#6D9F85'),          #  按钮相关设置(第一个参数是按钮上颜色设置,第二个是按钮背景色设置)'PROGRESS': DEFAULT_PROGRESS_BAR_COLOR,'BORDER': 1,                             # 边界线宽度设置'SLIDER_DEPTH': 0,                       # 滑块深度设置'PROGRESS_DEPTH': 0}                     # 滚动条深度设置

获取主题部分设置

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_width
theme_progress_bar_color
theme_slider_border_width
theme_slider_color
theme_text_color
#1) 导入库
import PySimpleGUI as sg
from PySimpleGUI import DEFAULT_PROGRESS_BAR_COLORsg.theme("DarkTeal11")  # 参数是获取的有效主题中的主题名称sg.Popup("弹窗演示主题设置")sg.theme_button_color(("black","#6d9f85"))
sg.Popup("修改主题中按钮文字及底纹颜色")

7、自定义窗口

7.1 利用for循环快速定义元素

for 循环前面是个小括号时,从左向右遍历。

#1) 导入库
import PySimpleGUI as sg#2) 定义布局,确定行数。一个中括号代表一行
# layout=[[sg.Text(i) for i in "ABCD"]]
#3) 创建窗口
window=sg.Window('AutoTestToo',layout) # 第一个参数是窗体的标题,第二个参数定义的布局#4) 事件循环
while True:event,values=window.read() #窗口的读取,有两个返回值(1.事件  2.值)print(event,values)if event==None:  #窗口关闭事件break#5) 关闭窗口
window.close()

在这里插入图片描述

for 循环前面是个中括号时从上向下遍历

#1) 导入库
import PySimpleGUI as sg#2) 定义布局,确定行数。一个中括号代表一行
# layout=[[sg.Text(i) for i in "ABCD"]]
layout=[[sg.Text(i)] for i in "ABCD"]#3) 创建窗口
window=sg.Window('AutoTestToo',layout) # 第一个参数是窗体的标题,第二个参数定义的布局#4) 事件循环
while True:event,values=window.read() #窗口的读取,有两个返回值(1.事件  2.值)print(event,values)if event==None:  #窗口关闭事件break#5) 关闭窗口
window.close()

在这里插入图片描述

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

最常见的布局定义是

layout=[
[sg.Text('请输入基本信息')]
[sg.Text('姓名'),sg.In()],
[sg.Text('性别'),sg.In()],
[sg.Text('国籍'),sg.In()],
[sg.B('确认'),sg.B('取消')]]

布局组合(layout可以进行简单计算)

layout_bottom=[[sg.B('Exit')]]layout=layout+layout_bottom
#1) 导入库
import PySimpleGUI as sg#2) 定义布局,确定行数。一个中括号代表一行
layout=[
[sg.Text('请输入基本信息')],
[sg.Text('姓名'),sg.In()],
[sg.Text('性别'),sg.In()],
[sg.Text('国籍'),sg.In()],
[sg.B('确认'),sg.B('取消')]
]layout_bottom=[[sg.B('Exit')]]
layout=layout+layout_bottom#3) 创建窗口
window=sg.Window('AutoTestToo',layout) # 第一个参数是窗体的标题,第二个参数定义的布局#4) 事件循环
while True:event,values=window.read() #窗口的读取,有两个返回值(1.事件  2.值)print(event,values)if event==None:  #窗口关闭事件break#5) 关闭窗口
window.close()

元素间除了用 ,隔开以外,还可以用]+[替代。
元素与元素以及行与行之间的逗号都可以用]+[替代

layout=[
[sg.Text('请输入基本信息')],
[sg.Text('姓名')]+[sg.In()]]+[
[sg.Text('性别')]+[sg.In()]]+[
[sg.Text('国籍'),sg.In()],
[sg.B('确认'),sg.B('取消')]]]
#1) 导入库
import PySimpleGUI as sg#2) 定义布局,确定行数。一个中括号代表一行
layout=[
[sg.Text('请输入基本信息')],
[sg.Text('姓名')]+[sg.In()],
[sg.Text('性别')]+[sg.In()],
[sg.Text('国籍')]+[sg.In()],
[sg.B('确认')]+[sg.B('取消')]
]layout_bottom=[[sg.B('Exit')]]
layout=layout+layout_bottom#3) 创建窗口
window=sg.Window('AutoTestToo',layout) # 第一个参数是窗体的标题,第二个参数定义的布局#4) 事件循环
while True:event,values=window.read() #窗口的读取,有两个返回值(1.事件  2.值)print(event,values)if event==None:  #窗口关闭事件break#5) 关闭窗口
window.close()
#1) 导入库
import PySimpleGUI as sg#2) 定义布局,确定行数。一个中括号代表一行
layout=[
[sg.Text('请输入基本信息')]]+[
[sg.Text('姓名')]+[sg.In()]]+[
[sg.Text('性别')]+[sg.In()]]+[
[sg.Text('国籍')]+[sg.In()]]+[
[sg.B('确认')]+[sg.B('取消')]
]layout_bottom=[[sg.B('Exit')]]
layout=layout+layout_bottom#3) 创建窗口
window=sg.Window('AutoTestToo',layout) # 第一个参数是窗体的标题,第二个参数定义的布局#4) 事件循环
while True:event,values=window.read() #窗口的读取,有两个返回值(1.事件  2.值)print(event,values)if event==None:  #窗口关闭事件break#5) 关闭窗口
window.close()

http://chatgpt.dhexx.cn/article/PCZZNZT5.shtml

相关文章

GUI系统

1.gui概念 2.OSD实现 1.概念 OSD是on-screen display的简称,即屏幕菜单式调节方式。一般是按Menu键后屏幕弹出的显示器各项调节项目信息的矩形菜单,可通过该菜单对显示器各项工作指标包括色彩、模式、几何形状等进行调整,从而达到最佳的使用…

Python之GUI编程

一、常用的GUI库 Tkinter:tkinter(Tk interface)是Python的标准GUI库,支持跨平台的GUI程序开发,tkinter适合小型的GUI程序编写,也特别适合初学者学习GUI编程。wxPython:wxPython是比较流行的GU…

快速入门GUI-guider

快速入门GUI-guider(本教程基于LVGL-v8.20) 前言一、什么是GUI Guider?二、使用教程1.下载软件2.熟悉LVGL各种组件3.新建工程4.上手体验5.代码移植 完结撒花 前言 本教程要基于有移植好的LVGL—8.2.0的代码为基础,对于不懂怎么移…

Python-GUI界面设计(tkinter)

文章目录 前言一、函数方法二、导入三、窗口[1]. 创建[2]. 标题[3]. 大小[4]. 背景[5]. 删除 四、按钮[1]. 创建[2]. 放置(绝对位置)[3]. 放置(相对位置)[4]. 代码 五、单行文本[1]. 创建[2]. 代码 六、多行文本[1]. 创建[2]. 获取…

GUI编程

一,简介 GUI编程(Graphical User Interface),即用户图形界面编程。 GUI淘汰原因:界面不够美观,需要jre环境。 学习GUI的好处:1,为后期学习MVC架构打好基础;2,了解监听;3&…

[java/初学者/GUI编程]GUI界面设计——界面组件类

前言 GUI,即图形用户界面,其英文全称是Graphics User Interface。 它是基于图形的界面,windows就是一个图形用户界面的操作系统,而DOS是基于命令提示符的操作系统,GUI编程就是编出一个图形用户界面的软件,它使用图形的方式,以菜…

QT GUI编程

QT GUI编程 一、QT基础1.1、QT简介1.2、QT应用范围1.3、开发环境1.4、QT软件下载安装教程1.5、QT内存管理1.6、第一个QT程序1.7、打印跟踪1.8、QT工程示例1.9、QT 图形编程1.10、信号与槽1.11、QT实现心仪的计算器1.12、将QT文件单独提取出来自由使用 二、窗口部件2.1、常用类介…

GUI(图形界面编程)

(1)GUI 与CLI GUI •Graphical User Interface(图形用户接口)。 •用图形的方式,来显示计算机操作的界面,这样更方便更直观。 CLI •Command line User Interface (命令行用户接口) •就是常见的Dos命令行操作。 •需要…

GUI概述

GUI简介 GUI(Graphics User Interface),中文名称为图形用户界面,是指采用图形方式显示的计算机操作用户界面,是计算机与其使用者之间的对话接口,是计算机系统的重要组成部分。 早期,电脑向用户提…

GUI(图形用户界面)

GUI全称是Graphical User Interface ,即图形用户界面。GUI就是可以让用户直接操作的图形界面,包括窗口、菜单、按钮、工具栏和其他各种图形界面元素。 1.Swing概述 Swing是Java语言开发图形化界面的一个工具包。它以抽象窗口工具包(AWT&…

虚拟存储技术

一.实现内存扩充的技术: (1)覆盖技术: 在程序运行中,在不同时刻把同一个存储区分配给不同程序段和数据段,实现存储区共享。适用于连续存储(单一连续区分配,分区) 如图B…

浅谈进程地址空间与虚拟存储空间

早期的内存分配机制 在早期的计算机中,要运行一个程序,会把这些程序全都装入内存,程序都是直接运行在内存上的,也就是说程序中访问的内存地址都是实际的物理内存地址。当计算机同时运行多个程序时,必须保证这些程序用…

虚拟存储器系统

技术来源 来源1:来源于服务器中虚拟化feature的实现,不同的程序需要共享一片硬件资源,包括计算资源与存储资源;如何有效且安全的共享存储器就是关键。来源2:消除有限的主存容量对大的程序的限制。远古时代&#xff0c…

虚拟存储器/虚拟内存

器为每个程序提供了一个大的、一致的、私有地址空间。 三个重要功能: 将主存看成是磁盘的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据。为每个进程提供了一致的私有空间。保护每个进程的地址空间不被其他进程破…

5.虚拟存储管理

虚拟存储管理 文章目录 虚拟存储管理1.虚拟存储器概述1.1常规存储管理方式的特征和局部性原理1.2虚拟存储器的定义与特征1.3虚拟存储器的实现方法 2.请求分页存储管理方式2.1请求分页存储管理方式基本思想2.2请求分页中的硬件支持2.3内存分配策略和分配算法2.4调页策略 3.页面置…

(五)虚拟存储概念

1.需求背景 计算机系统内存空间不够用。 2.覆盖和交换 覆盖技术:把程序划分成功能独立的模块,将不会同时执行的模块共享同一块内存区域。 缺点:编程困难,增加了执行时间 交换技术:增加正在运行或需要运行的程序的内…

存储虚拟化技术的介绍

导读Java虚拟机内存的各个区域,以及这些区域的作用、服务对象以及其中可能产生的问题,作为大家的面试宝典。那一起来学习—存储虚拟化技术。 数据在整个计算机系统是最重要的一部分,也是最珍贵的。数据的存储一直是一个热议的话题&#xff0c…

进程地址空间与虚拟存储空间的理解

在进入正题前先来谈谈操作系统内存管理机制的发展历程,了解这些有利于我们更好的理解目前操作系统的内存管理机制。 一 早期的内存分配机制 在 早期的计算机中,要运行一个程序,会把这些程序全都装入内存,程序都是直接运行…

虚拟存储管理仿真

实验内容 模拟请求分页虚拟存储管理技术中的硬件地址变换、缺页中断及页式淘汰算法处理缺页中断 实验目的 为了使大的作业(其地址空间超过内存可用空间)或多个作业的地址空间之和超过实际主存空间时,仍能运行,引入了”虚拟存储器”的概念.使作业的一部分地址空间在主存,另一…

虚拟内存空间

每一个进程都会对应一个虚拟地址空间,32位操作系统会为每个进程分配4G(2的32次方)的虚拟地址空间,而MMU(Memory Management Unit,内存管理单元)负责把这4G虚拟内存映射到实际的物理内存中。这4G…