日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
用PySimpleGUI輕松為程序和腳本添加GUI

很少有人通過像雙擊.exe文件那樣雙擊.py文件來運行Python程序。普通用戶(非程序員)雙擊.exe文件時,認為應(yīng)該彈出可與之交互的窗口。雖然可以使用tkinter借助標準的Python安裝來創(chuàng)建GUI,但是許多程序不太可能這樣。

1.GUI框架

市面上不缺面向Python的GUI框架。Tkinter、WxPython、Qt和Kivy是幾個主要的軟件包。此外,還有大量簡化版GUI軟件包可“包裝”其中一個主要軟件包,包括EasyGUI、PyGUI和Pyforms。

問題是,初學(xué)者連最簡單的主要軟件包都學(xué)不會。這使得包裝程序包成為一種潛在的選擇,但對于大多數(shù)新用戶來說,構(gòu)建自定義GUI布局依然很困難或不可能。即便可能,包裝程序包也仍需要編一頁頁代碼。

PySimpleGUI(https://github.com/MikeTheWatchGuy/PySimpleGUI)試圖通過為GUI提供一種超級簡單、易于理解且易于定制的界面來克服這些GUI挑戰(zhàn)。若使用PySimpleGUI,連許多復(fù)雜的GUI也用不了20行代碼。

2.秘密

PySimpleGUI非常適合新手的原因是,該軟件包含有用戶通常需要編寫的大部分代碼。處理按鈕回調(diào)的是PySimpleGUI,而不是用戶的代碼。初學(xué)者很難掌握函數(shù)這個概念,要求他們在頭幾周理解回調(diào)函數(shù)確實勉為其難。

就大多數(shù)GUI而言,安排GUI窗口組件通常需要幾行代碼,每個窗口組件至少一兩行。 PySimpleGUI使用自動創(chuàng)建布局的“自動打包程序”。布局GUI窗口無需pack或grid系統(tǒng)。

最后,PySimpleGUI以巧妙的方式利用Python語言構(gòu)件,減少代碼數(shù)量,簡單直觀地返回GUI數(shù)據(jù)。用表單布局創(chuàng)建窗口組件時,它已配置到位,無需編寫多行代碼。

3.GUI是什么?

大多數(shù)GUI做一件事:從用戶處收集信息并返回信息。從程序員的角度來看,這可以概括為函數(shù)調(diào)用,如下所示:

button, values = GUI_Display(gui_layout)

大多數(shù)GUI需要用戶點擊的按鈕(比如,確定、取消、保存、是或不等)以及用戶輸入的值。GUI的本質(zhì)可以歸結(jié)為一行代碼。

這正是PySimpleGUI的工作原理(對于簡單的GUI而言)。調(diào)用以顯示GUI時,在點擊關(guān)閉表單的按鈕之前不執(zhí)行任何操作。

有些較復(fù)雜的GUI,比如點擊按鈕后不關(guān)閉的GUI。包括面向機器人的遠程控制界面和聊天窗口。這些復(fù)雜的表單也可以用PySimpleGUI來創(chuàng)建。

4.快速創(chuàng)建GUI

PySimpleGUI何時有用?只要你需要GUI就有用。創(chuàng)建和嘗試GUI用不了5分鐘。創(chuàng)建GUI的最快方法是從PySimpleGUI Cookbook(https://pysimplegui.readthedocs.io/en/latest/cookbook/)復(fù)制一個。遵照這些步驟:

  • 找到類似你想創(chuàng)建的GUI的一個GUI。
  • 從Cookbook復(fù)制代碼。
  • 粘貼到你的IDE,并運行。

不妨看看來自Cookbook的第一個recipe。

 
 
 
 
  1. import PySimpleGUI as sg 
  2. # Very basic form.  Return values as a list 
  3. form = sg.FlexForm('Simple data entry form')  # begin with a blank form 
  4. layout = [ 
  5.           [sg.Text('Please enter your Name, Address, Phone')], 
  6.           [sg.Text('Name', size=(15, 1)), sg.InputText('name')], 
  7.           [sg.Text('Address', size=(15, 1)), sg.InputText('address')], 
  8.           [sg.Text('Phone', size=(15, 1)), sg.InputText('phone')], 
  9.           [sg.Submit(), sg.Cancel()] 
  10.          ] 
  11. button, values = form.LayoutAndRead(layout) 
  12. print(button, values[0], values[1], values[2])

它是大小合適的表單。

圖1:PySimpleGUI數(shù)據(jù)輸入表單

如果你只需要收集幾個值,它們又都是字符串,可以復(fù)制這個recipe,根據(jù)你的要求來修改。

你甚至可以僅用5行代碼來創(chuàng)建自定義GUI布局。

 
 
 
 
  1. import PySimpleGUI as sg 
  2. form = sg.FlexForm('My first GUI') 
  3. layout = [ [sg.Text('Enter your name'), sg.InputText()], 
  4.            [sg.OK()] ] 
  5. button, (name,) = form.LayoutAndRead(layout) 

圖2:僅用5行代碼的PySimpleGUI表單

5.5分鐘內(nèi)創(chuàng)建自定義GUI

如果你有簡單的布局,應(yīng)該用不了5分鐘,就能夠用PySimpleGUI創(chuàng)建自定義布局,只要修改來自Cookbook的代碼。

窗口組件在PySimpleGUI中名為元素。這些元素就是你輸入到Python代碼中的,注意拼寫。

核心元素

Text

InputText

Multiline

InputCombo

Listbox

Radio

Checkbox

Spin

Output

SimpleButton

RealtimeButton

ReadFormButton

ProgressBar

Image

Slider

Column

快捷方式列表

PySimpleGUI還有兩種元素快捷方式。一種就是一模一樣的元素的其他名稱(比如T代替Text)。第二種為元素配置某個特定的設(shè)置,那樣不必指定所有參數(shù)(比如Submit是上面有文本“Submit”的按鈕)。

T = Text

Txt = Text

In = InputText

Input = IntputText

Combo = InputCombo

DropDown = InputCombo

Drop = InputCombo

按鈕快捷方式

許多常用按鈕已被實施成快捷方式。這包括:

FolderBrowse

FileBrowse

FileSaveAs

Save

Submit

OK

Ok

Cancel

Quit

Exit

Yes

No

還有針對更一般的按鈕功能的快捷方式。

SimpleButton

ReadFormButton

RealtimeButton

這些都是你可以在PySimpleGUI中選擇的GUI窗口組件。如果某個不在這些列表上,它不會進入表單布局。

6.GUI設(shè)計模式

GUI中往往不變的元素是創(chuàng)建和顯示窗口的調(diào)用。元素的布局因程序而異。

下面是上述例子的代碼,布局已去除:

 
 
 
 
  1. import PySimpleGUI as sg 
  2. form = sg.FlexForm('Simple data entry form') 
  3. # Define your form here (it's a list of lists) 
  4. button, values = form.LayoutAndRead(layout)

大多數(shù)GUI的流程如下:

  • 創(chuàng)建表單對象
  • 將GUI定義成列表清單
  • 顯示GUI,獲得結(jié)果

7.GUI布局

想創(chuàng)建自定義GUI,先將表單細分成幾行,因為表單每次定義一行。然后將一個元素放在另一個后面,按從左到右的順序。

結(jié)果是看起來是這樣的“列表清單”:

 
 
 
 
  1. layout = [  [Text('Row 1')], [Text('Row 2'), Checkbox('Checkbox 1', OK()), Checkbox('Checkbox 2'), OK()] ]

這個布局生成這個窗口:

圖3:PySimpleGUI自定義數(shù)據(jù)輸入表單

8.顯示GUI

一旦完成了布局,并復(fù)制了創(chuàng)建和顯示表單的代碼行,現(xiàn)在可以顯示表單,并從用戶處獲得值。

這行代碼顯示表單并提供結(jié)果:

 
 
 
 
  1. button, values = form.LayoutAndRead(layout)

表單返回兩個值:所點擊按鈕的文本和用戶輸入到表單的值列表。

如果示例表單已顯示,用戶只是點擊了“確定”按鈕,結(jié)果會是如此:

 
 
 
 
  1. button == 'OK' 
  2. values == [False, False]

復(fù)選框元素返回True或False的值。由于復(fù)選框默認情況下未勾選,返回的兩個值都是False。

9.顯示結(jié)果

一旦你有了來自GUI的值,可以核實變量中有什么值。不是使用print語言將它們輸出,不妨堅持使用GUI、將數(shù)據(jù)輸出到窗口。

PySimpleGUI有好多消息框可供選擇。傳遞到消息框的數(shù)據(jù)在窗口中顯示。該函數(shù)接受眾多變量。你只要表明想在調(diào)用中看到的所有變量。

PySimpleGUI中最常用的消息框是MsgBox。為了顯示前一個示例的結(jié)果,編寫:

 
 
 
 
  1. MsgBox('The GUI returned:', button, values)

10.統(tǒng)統(tǒng)組合起來

你已知道了基本面,不妨組建一個含有PySimpleGUI盡可能多元素的表單。另外為了有漂亮的外觀,我們將“l(fā)ook and feel”改成綠色和棕黃色顏色方案。

 
 
 
 
  1. import PySimpleGUI as sg 
  2. sg.ChangeLookAndFeel('GreenTan') 
  3. form = sg.FlexForm('Everything bagel', default_element_size=(40, 1)) 
  4. column1 = [[sg.Text('Column 1', background_color='#d3dfda', justification='center', size=(10,1))], 
  5.            [sg.Spin(values=('Spin Box 1', '2', '3'), initial_value='Spin Box 1')], 
  6.            [sg.Spin(values=('Spin Box 1', '2', '3'), initial_value='Spin Box 2')], 
  7.            [sg.Spin(values=('Spin Box 1', '2', '3'), initial_value='Spin Box 3')]] 
  8. layout = [ 
  9.     [sg.Text('All graphic widgets in one form!', size=(30, 1), font=("Helvetica", 25))], 
  10.     [sg.Text('Here is some text.... and a place to enter text')], 
  11.     [sg.InputText('This is my text')], 
  12.     [sg.Checkbox('My first checkbox!'), sg.Checkbox('My second checkbox!', default=True)], 
  13.     [sg.Radio('My first Radio!     ', "RADIO1", default=True), sg.Radio('My second Radio!', "RADIO1")], 
  14.     [sg.Multiline(default_text='This is the default Text should you decide not to type anything', size=(35, 3)), 
  15.      sg.Multiline(default_text='A second multi-line', size=(35, 3))], 
  16.     [sg.InputCombo(('Combobox 1', 'Combobox 2'), size=(20, 3)), 
  17.      sg.Slider(range=(1, 100), orientation='h', size=(34, 20), default_value=85)], 
  18.     [sg.Listbox(values=('Listbox 1', 'Listbox 2', 'Listbox 3'), size=(30, 3)), 
  19.      sg.Slider(range=(1, 100), orientation='v', size=(5, 20), default_value=25), 
  20.      sg.Slider(range=(1, 100), orientation='v', size=(5, 20), default_value=75), 
  21.      sg.Slider(range=(1, 100), orientation='v', size=(5, 20), default_value=10), 
  22.      sg.Column(column1, background_color='#d3dfda')], 
  23.     [sg.Text('_'  * 80)], 
  24.     [sg.Text('Choose A Folder', size=(35, 1))], 
  25.     [sg.Text('Your Folder', size=(15, 1), auto_size_text=False, justification='right'), 
  26.      sg.InputText('Default Folder'), sg.FolderBrowse()], 
  27.     [sg.Submit(), sg.Cancel()] 
  28.      ] 
  29. button, values = form.LayoutAndRead(layout) 
  30. sg.MsgBox(button, values)

看起來代碼好多,但是試著直接用tkinter編寫同樣的GUI布局,你很快意識到代碼是何等少。

圖4:PySimpleGUI高級自定義數(shù)據(jù)輸入表單

最后一行代碼打開消息框。 這就是它的樣子:

圖5:PySimpleGUI自定義消息框

消息框調(diào)用的每個參數(shù)都在一個新的行上顯示。消息框中有兩行文本;第二行很長,包了好多次。

花點時間將結(jié)果值與GUI配對,了解如何創(chuàng)建和返回結(jié)果。

11.將GUI添加到程序或腳本

如果你有一個使用命令行的腳本,不必為了添加GUI而丟棄它。一個簡單的辦法是,如果命令行上給出零參數(shù),就運行GUI。 否則,執(zhí)行命令行。

只需要這種邏輯:

 
 
 
 
  1. if len(sys.argv) == 1: 
  2.         # collect arguments from GUI 
  3. else: 
  4.     # collect arguements from sys.argv

想盡快創(chuàng)建并運行GUI,最簡單的方法就是,從PySimpleGUI Cookbook(https://pysimplegui.readthedocs.io/en/latest/cookbook/)復(fù)制一個recipe并修改。


當前題目:用PySimpleGUI輕松為程序和腳本添加GUI
文章網(wǎng)址:http://m.5511xx.com/article/cdshiep.html