本文目錄一覽:
- 1、如何讓tkinter自動關閉窗口後顯示另一個窗口?
- 2、python圖形化界面設計tkinter
- 3、C語言如何開發桌面GUI應用程序?
- 4、python腳本開頭的from Tkinter import *是什麼意思?
如何讓tkinter自動關閉窗口後顯示另一個窗口?
我是Python新手,必須編寫一個簡單的GUI程序,為了簡單起見,我選擇在tkinter中這樣做。
我想要的GUI應該非常類似於在Windows上安裝程序時經常遇到的對話框(您想要安裝的位置,您想要的模塊等)。基本上當它在python3.3中運行時,我想要一個窗口出現,其中一些選項佔據了大部分窗口,然後是','返回'和'取消'底部的按鈕;點擊「下一步」'按鈕,當前窗口關閉,打開一個看起來相同的新窗口,除了它有不同的選項(或者它可能是同一個窗口,但它的內容已被破壞,我不確定哪個更好) 。我想要的粗略布局顯示在this image
yU8wW.png中
我已經四處尋找代碼,這些代碼與此類似,但未找到任何代碼。我看過this answer,但它並不是我想要的。我使用this tutorial來了解我對tkinter的了解,但我無法在其中找到答案。
這是我對我想要做的簡化版本的極其糟糕的嘗試:當我運行代碼時,它會創建一個帶有兩個按鈕的窗口。 ' Quit'按鈕工作正常;但是,當我點擊「下一步」時按鈕關閉窗口並根據需要打開一個新窗口,但它也會打開另一個窗口。
from tkinter import *
from tkinter import ttk
def win1():
mainframe = ttk.Frame(root, padding = ‘3 3 12 12’)
mainframe.grid(column = 0, row = 0, sticky = (N, W, E, S))
mainframe.columnconfigure(0, weight = 1)
mainframe.rowconfigure(0, weight = 1)
ttk.Button(mainframe, text = ‘Next’, command = win2).grid(
column = 1, row = 1, sticky = W)
ttk.Button(mainframe, text = ‘Quit’, command = quit).grid(
column = 1, row = 2, sticky = W)
root.mainloop()
def quit():
root.destroy()
def win2():
quit()
new = Toplevel()
new.title(‘Window 2’)
new = ttk.Frame(root, padding = ‘3 3 12 12’)
new.grid(column = 0, row = 0, sticky = (N, W, E, S))
new.columnconfigure(0, weight = 1)
new.rowconfigure(0, weight = 1)
ttk.Button(mainframe, text = ‘Next’, command = win2).grid(
column = 1, row = 1, sticky = W)
root = Tk()
win1()
這會出現以下錯誤消息(我不明白):
Exception in Tkinter callback
Traceback (most recent call last):
File “/usr/lib/python3.3/tkinter/__init__.py”, line 1478, in __call__
return self.func(*args)
File “”, line 23, in win2
File “/usr/lib/python3.3/tkinter/ttk.py”, line 733, in __init__
Widget.__init__(self, master, “ttk::frame”, kw)
File “/usr/lib/python3.3/tkinter/ttk.py”, line 553, in __init__
tkinter.Widget.__init__(self, master, widgetname, kw=kw)
File “/usr/lib/python3.3/tkinter/__init__.py”, line 2078, in __init__
(widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: this isn’t a Tk applicationNULL main window
除了它實際上沒有做我想要的事實之外,我覺得我正在以完全錯誤的方式(在一個函數中定義窗口等),並且會遇到很多我想讓它變得更複雜時遇到麻煩。有沒有人能夠以更好的方式重寫我的代碼,並以某種方式幫助我構建更複雜的程序
python圖形化界面設計tkinter
python提供了多個圖形開發界面的庫,幾個常用Python GUI庫如下:
Tkinter: Tkinter模塊(“Tk 接口”)是Python的標準Tk GUI工具包的接口.Tk和Tkinter可以在大多數的Unix平台下使用,同樣可以應用在Windows和Macintosh系統里.,Tk8.0的後續版本可以實現本地窗口風格,並良好地運行在絕大多數平台中。
wxPython:wxPython 是一款開源軟件,是 Python 語言的一套優秀的 GUI 圖形庫,允許 Python 程序員很方便的創建完整的、功能鍵全的 GUI 用戶界面。
Jython:Jython程序可以和Java無縫集成。除了一些標準模塊,Jython使用Java的模塊。Jython幾乎擁有標準的Python中不依賴於C語言的全部模塊。比如,Jython的用戶界面將使用Swing,AWT或者SWT。Jython可以被動態或靜態地編譯成Java位元組碼。
Tkinter 編程
Tkinter 是Python的標準GUI庫。Python使用Tkinter可以快速的創建GUI應用程序。
由於Tkinter是內置到python的安裝包中、只要安裝好Python之後就能import Tkinter庫、而且IDLE也是用Tkinter編寫而成、對於簡單的圖形界面Tkinter還是能應付自如。
創建一個GUI程序
1、導入Tkinter模塊
2、創建控件
3、指定這個控件的master, 即這個控件屬於哪一個
4、告訴GM(geometry manager)有一個控件產生了。
實例:
1 #!/usr/bin/python2 # -*- coding: UTF-8 -*-3 4 import Tkinter5 top = Tkinter.Tk()6 # 進入消息循環7 top.mainloop()
實例2:
1 #!/usr/bin/python 2 # -*- coding: UTF-8 -*- 3 4 from Tkinter import * # 導入 Tkinter 庫 5 root = Tk() # 創建窗口對象的背景色 6 # 創建兩個列表 7 li = [‘C’,’python’,’php’,’html’,’SQL’,’java’] 8 movie = [‘CSS’,’jQuery’,’Bootstrap’] 9 listb = Listbox(root) # 創建兩個列表組件10 listb2 = Listbox(root)11 for item in li: # 第一個小部件插入數據12 listb.insert(0,item)13 14 for item in movie: # 第二個小部件插入數據15 listb2.insert(0,item)16 17 listb.pack() # 將小部件放置到主窗口中18 listb2.pack()19 root.mainloop() # 進入消息循環
Tkinter 組件
Tkinter的提供各種控件,如按鈕,標籤和文本框,一個GUI應用程序中使用。這些控件通常被稱為控件或者部件。
目前有15種Tkinter的部件。我們提出這些部件以及一個簡短的介紹,在下面的表:
控件
描述
Button 按鈕控件;在程序中顯示按鈕。
Canvas 畫布控件;顯示圖形元素如線條或文本
Checkbutton 多選框控件;用於在程序中提供多項選擇框
Entry 輸入控件;用於顯示簡單的文本內容
Frame 框架控件;在屏幕上顯示一個矩形區域,多用來作為容器
Label 標籤控件;可以顯示文本和位圖
Listbox 列表框控件;在Listbox窗口小部件是用來顯示一個字符串列表給用戶
Menubutton 菜單按鈕控件,由於顯示菜單項。
Menu 菜單控件;顯示菜單欄,下拉菜單和彈出菜單
Message 消息控件;用來顯示多行文本,與label比較類似
Radiobutton 單選按鈕控件;顯示一個單選的按鈕狀態
Scale 範圍控件;顯示一個數值刻度,為輸出限定範圍的數字區間
Scrollbar 滾動條控件,當內容超過可視化區域時使用,如列表框。.
Text 文本控件;用於顯示多行文本
Toplevel 容器控件;用來提供一個單獨的對話框,和Frame比較類似
Spinbox 輸入控件;與Entry類似,但是可以指定輸入範圍值
PanedWindow PanedWindow是一個窗口布局管理的插件,可以包含一個或者多個子控件。
LabelFrame labelframe 是一個簡單的容器控件。常用與複雜的窗口布局。
tkMessageBox 用於顯示你應用程序的消息框。
標準屬性
標準屬性也就是所有控件的共同屬性,如大小,字體和顏色等等。
屬性 描述
Dimension 控件大小;
Color 控件顏色;
Font 控件字體;
Anchor 錨點;
Relief 控件樣式;
Bitmap 位圖;
Cursor 光標;
幾何管理
Tkinter控件有特定的幾何狀態管理方法,管理整個控件區域組織,一下是Tkinter公開的幾何管理類:包、網格、位置
幾何方法 描述
pack() 包裝;
grid() 網格
place() 位置
C語言如何開發桌面GUI應用程序?
純C的很少,windows32
sdk和linux的gtk是為數不多的2個庫。
現代基本沒有用C開發gui的,C++是更好的選擇,像qt
mfc比win32好用得多。
開發效率更高的是python,tkinter
wxwidget
pyqt都很方便
python腳本開頭的from Tkinter import *是什麼意思?
這是Python導入庫文件的語法:
from Tkinter的意思就是導入Tkinter,它是一個庫,也可以簡單稱之為類;
import *的意思是導入庫中所有的類,函數,變量等等信息,這樣在調用相關函數或者變量的時候,就不用加Tkinter前綴了。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/308479.html