Python的交互界面


轉載於博客園:https://www.cnblogs.com/A-FM/p/5724269.html ,原作者 願成瘋魔

 1 from tkinter import *
 2 # 導入tkinter模塊的所有內容
 3 
 4 root = Tk()
 5 
 6 # 創建一個文本Label對象
 7 textLabel = Label(root,   # 將內容綁定在  root 初始框上面
 8                   text="您所下載的影片含有未成年人限制內容,\n請滿18歲后再點擊觀看!",
 9                   justify=LEFT, # 用於 指明文本的 位置
10                   padx=10)        #   限制 文本的 位置 , padx 是 x軸的意思 . 
11 textLabel.pack(side=LEFT)   # 致命 textlabel 在初識框 中的位置
12 
13 # 創建一個圖像Label對象
14 # 用PhotoImage實例化一個圖片對象(支持gif格式的圖片)
15 photo = PhotoImage(file="18.gif")
16 imgLabel = Label(root, image=photo)  # 綁定在初始曠上面 
17 imgLabel.pack(side=RIGHT)  # 指明 圖片位置
18 
19 mainloop()
復制代碼

復制代碼
 1 from tkinter import *
 2 
 3 root = Tk()
 4 
 5 photo = PhotoImage(file="bg.gif")    # 聲明一下圖片 . 
 6 theLabel = Label(root,
 7                  text="大家好,才是真的好.",  # 載入文本 
 8                  justify=LEFT,     # 聲明文本的位置 
 9                  image=photo,        # 載入圖片
10                  compound=CENTER,   #聲明圖片的位置
11                  font=("楷體", 20),   # 聲明文本字體 
12                  fg="white"    # 聲明文本顏色 .
13                  )
14 theLabel.pack()     # 自動調整布局
15 
16 mainloop()
復制代碼

復制代碼
 1 from tkinter import *
 2 # 導入tkinter模塊的所有內容
 3 
 4 def callback():         # 定義一個 改變文本的函數 . 
 5     var.set("吹吧你,我才不信呢~")
 6 
 7 root = Tk()     # 初始曠的聲明 . 
 8 
 9 frame1 = Frame(root)   # 在初始曠里面 聲明兩個模塊 . 
10 frame2 = Frame(root)
11 
12 # 創建一個文本Label對象
13 var = StringVar()           #聲明可變 變量  . 
14 var.set("您所下載的影片含有未成年人限制內容,\n請滿18歲后再點擊觀看!") # 設置變量 . 
15 textLabel = Label(frame1,           # 綁定到模塊1
16                   textvariable=var,  # textvariable 是文本變量的意思 .  
17                   justify=LEFT)    # 字體 位置 
18 textLabel.pack(side=LEFT)   #  整體位置 
19 
20 # 創建一個圖像Label對象
21 # 用PhotoImage實例化一個圖片對象(支持gif格式的圖片)
22 photo = PhotoImage(file="18.gif")
23 imgLabel = Label(frame1, image=photo)
24 imgLabel.pack(side=RIGHT)
25 
26 # 加一個按鈕
27 theButton = Button(frame2, text="已滿18周歲", command=callback)  # 按下按鈕 執行 callback函數
28 theButton.pack()
29 
30 frame1.pack(padx=10, pady=10)
31 frame2.pack(padx=10, pady=10)
32 
33 mainloop()
復制代碼

       

 

 

 

 

復制代碼
 1 from tkinter import *
 2 
 3 root = Tk()
 4 root.title('皇上翻牌子啦!')    # 添加 初識框的標題 . 
 5 GIRLS = ['西施','貂蟬','王昭君','楊玉環']         #  列表內容 . 
 6 v = []  # 用於存放變量
 7 
 8 for girl in GIRLS:
 9     v.append(IntVar())
10     print(IntVar())
11     b = Checkbutton(root,text=girl,variable=v[-1],padx=80,font=('楷體',22))
12     b.pack(anchor=W)      # 文本的位置 . (東西南北的首拼 (英文))
13 
14 
15 mainloop()
復制代碼

 

復制代碼
 1 from tkinter import *
 2 
 3 root = Tk()
 4 root.title('皇上翻牌子啦!')    # 添加 初識框的標題 . 
 5 GIRLS = ['西施','貂蟬','王昭君']         #  列表內容 . 
 6 v = []  # 用於存放變量
 7 
 8 for girl in GIRLS:
 9     v.append(IntVar())  # 聲明一個 變量並且加入 v
10     b = Checkbutton(root,text=girl,variable=v[-1],padx=80,font=('楷體',22)) #記錄下來 變量的變化
11     l = Label(root,textvariable=v[-1]) # 將變量表示為文本並且加入初始曠 . 
12     l.pack(anchor=N)
13     b.pack(anchor=W)
14 b = Checkbutton(root,text='楊玉環',variable=v[1],padx=80,font=('楷體',22))
15 l = Label(root,textvariable=v[1])
16 l.pack(anchor=N)
17 b.pack(anchor=W)
18 mainloop()
復制代碼

 

 

讓楊玉環和貂蟬同用一個tk變量 .  這樣修改 貂蟬和楊玉環 任意一個另一個也會被改變的 . 

 

復制代碼
 1 from tkinter import *
 2 
 3 root = Tk()
 4 
 5 v = IntVar()
 6 
 7 Radiobutton(root,text='One',variable=v,value=1).pack(anchor=W)
 8 Radiobutton(root,text='Two',variable=v,value=2).pack(anchor=W)
 9 Radiobutton(root,text='Three',variable=v,value=3).pack(anchor=W)  # value 的值不同  . 相同的值 在其中一個被選中之后剩余的也會自動選中 .
10 
11 mainloop()
復制代碼

     這樣就實現了單選的功能 . 

復制代碼
 1 from tkinter import *
 2 
 3 root = Tk()
 4 v = IntVar()
 5 
 6 Language = [('Python',1),
 7             ('ruby',2),
 8             ('C++',3),
 9             ('java',2)
10         ]
11 for lang,num in Language:
12     b = Radiobutton(root,text=lang,variable=v,value=num)
13     l = Label(root,textvariable=v)
14     l.pack()
15     b.pack(anchor=W)
16            
17 mainloop()
復制代碼

復制代碼
 1 from tkinter import *
 2 
 3 root = Tk()
 4 v = IntVar()
 5 
 6 Language = [('Python',1),
 7             ('ruby',2),
 8             ('C++',3),
 9             ('java',2)
10         ]
11 for lang,num in Language:
12     b = Radiobutton(root,text=lang,variable=v,value=num,indicatoron=False,padx=30,pady=3)
13     l = Label(root,textvariable=v)
14     #l.pack()
15     b.pack(anchor=W,fill=X)
16            
17 mainloop()
復制代碼

將其中內容分隔開 .  LabelFrame

復制代碼
 1 from tkinter import *
 2 import easygui
 3 
 4 root = Tk()
 5 root.title('編程語言大戰 !')
 6 v = IntVar()
 7 photo = PhotoImage(file="bg.gif")    # 聲明一下圖片 .
 8 def callback():
 9     easygui.msgbox('你這樣讓我很不爽',title='你說呢?')
10 
11 group=LabelFrame(root,text='最好的編程語言是 ?')   # 基於root 制定一個框架 . 
12 group.pack(padx=50)
13 
14 v.set(1)
15 Language = [('Python',1),
16             ('ruby',2),
17             ('C++',3),
18             ('java',2)
19         ]
20 for lang,num in Language:
21     b = Radiobutton(group,text=lang,variable=v,value=num,indicatoron=False,padx=30,pady=3)
22     l = Label(group,textvariable=v)  # 將內容添加到框架當中
23     l.pack()
24     b.pack(anchor=W,fill=X)
25 
26 theButton=Button(root,text='就是這個了',command=callback)
27 theButton.pack(pady=20)
28 mainloop()
29  
復制代碼

 

 

        

 

 

復制代碼
 1 from tkinter import *
 2 
 3 root = Tk()
 4 
 5 Label(root,text='帳號 :').grid(row=0,column=0) # 對Label內容進行 表格式 布局
 6 Label(root,text='密碼 :').grid(row=1,column=0)
 7 
 8 v1=StringVar()    # 設置變量 . 
 9 v2=StringVar()
10 
11 e1 = Entry(root,textvariable=v1)            # 用於儲存 輸入的內容  
12 e2 = Entry(root,textvariable=v2,show='$')
13 e1.grid(row=0,column=1,padx=10,pady=5)      # 進行表格式布局 . 
14 e2.grid(row=1,column=1,padx=10,pady=5)
15 def show():
16     print("帳號 :%s" % e1.get())          # get 變量內容 
17     print("密碼 :%s" % e2.get())
18 
19 Button(root,text='芝麻開門',width=10,command=show).grid(row=3,column=0,sticky=W,padx=10,pady=5)  # 設置 button 指定 寬度 , 並且 關聯 函數 , 使用表格式布局 . 
20 Button(root,text='退出',width=10,command=root.quit).grid(row=3,column=1,sticky=E,padx=10,pady=5)
21 
22 mainloop()
復制代碼

 

   

 

復制代碼
 1 from tkinter import *
 2 
 3 master = Tk()
 4 
 5 def test():
 6     if e1.get() == '小甲魚':
 7         print("正確")
 8         return True
 9     else:
10         print('錯誤')
11         e1.delete(0,END)
12         return False
13 
14 v=StringVar()
15 
16 e1 = Entry(master,textvariable=v,validate='focusout',validatecommand=test)  # validate 用於指定什么時候檢測 . validatecommand 用於指定檢測的標准
17 e2 = Entry(master)
18 e1.pack(padx=10,pady=10)
19 e2.pack(padx=10,pady=10)
20 
21 
22 
23 mainloop()
復制代碼

 

 

 Python中的Entry 輸入檢測 , validate 用於指定檢測的時機 . validatecommand 用於 指定監測機制 , invlidcommand 用於指定當結果不合格的時候執行的方案 . 

復制代碼
 1 from tkinter import *
 2 
 3 master = Tk()
 4 
 5 v = StringVar()
 6 
 7 def test():
 8     if e1.get() == '小甲魚':
 9         print("正確")
10         return True
11     else:
12         print('錯誤')
13         e1.delete(0,END)
14         return False
15 
16 def test1():
17     print('我被調用了....')
18     return True
19 
20 v=StringVar()
21 
22 e1 = Entry(master,textvariable=v,validate='focusout',\
23            validatecommand=test,invalidcommand=test1)  # validate 用於指定什么時候檢測 . validatecommand 用於指定檢測的標准
24 e2 = Entry(master)
25 e1.pack(padx=10,pady=10)
26 e2.pack(padx=10,pady=10)
27 
28 
29 
30 mainloop()
復制代碼

復制代碼
 1 from tkinter import *
 2 import easygui 
 3 
 4 master = Tk()
 5 
 6 frame = Frame(master)  # 確定一個框架用於美觀
 7 
 8 frame.pack(padx = 20,pady = 20)
 9 
10 v1 = StringVar() # 分別用於儲存需要計算的數據和 結果
11 v2 = StringVar()
12 v3 = StringVar()
13 
14 def test(content):
15     return content.isdigit()  # 檢查是不是數字 .
16 
17 testCMD = frame.register(test)  # 將函數 進行包裝 . 
18 
19 e1 = Entry(frame,width=10,textvariable=v1,validate='key',\
20            validatecommand=(test,'%p')).grid(row=0,column=0,pady=10) # %p 是輸入框的最新內容 . 當輸入框允許改變的時候該值有效 ,
21 Label(frame,text='+',padx=10).grid(row=0,column=1)
22 
23 e2 = Entry(frame,width=10,textvariable=v2,validate='key',\
24            validatecommand=(test,'%p')).grid(row=0,column=2)
25 Label(frame,text='=',padx=10).grid(row=0,column=3)
26 
27 e3 = Entry(frame,width=15,textvariable=v3,state='readonly').grid(row=0,column=4)
28 
29 def calc():
30     if v1.get()=='':
31         easygui.msgbox('請先輸入內容 !')
32         return 
33     result = int(v1.get()) + int(v2.get())
34     v3.set(result)
35 
36 Button(frame,text='計算結果',command=calc).grid(row=1,column=2,pady=5)
37 
38 mainloop()
復制代碼

    

 

滾動條 設置 .

 為了在某個組件上面安裝垂直滾動條 , 你需要做兩件事 . 

1 : 攝制組間的yscrollbarcommand選項作為Scorllbar組建的set()方法 . 

2 :  設置Scrollbar組建的command選項為該組件的yview()方法

 lb = Listbox(root,yscrollcommand=sb.set)  這一句 其中的 lb 是 Listbox的實例化 , 用於綁定root 框架  . yscrollcommand=sb(滾動條).set 用於 當 可選內容 變化的時候 ,  帶動滾動條的變化 .

 sb.config(command=lb.yview)  滾動條 , 和 可選內容進行 關系綁定 . 

復制代碼
 1 from tkinter import *
 2 
 3 
 4 root = Tk()
 5 
 6 sb = Scrollbar(root)
 7 sb.pack(side=RIGHT,fill=Y) # 需要先 將滾動條放置 到一個合適的位置 , 然后開始填充 . 
 8 
 9 lb = Listbox(root,yscrollcommand=sb.set) # 內容 控制滾動條 . 
10 
11 for i in range(111):
12     lb.insert(END,i)
13 
14 lb.pack(side=LEFT,fill=BOTH)
15 
16 sb.config(command=lb.yview)  # 滑輪控制內容 . 
17 
18 mainloop()
復制代碼

復制代碼
 1 from tkinter import *
 2 
 3 
 4 root = Tk()
 5 
 6 s1 = Scale(root,from_=-10,to=10,tickinterval=5,resolution=2,length=100) # tickinterval 是設置的 標尺 多少長度有一個可讀 , resolution設置的是 一次跳躍的 長度 . length 是設置長度 . 
 7 s1.pack()
 8 s2 = Scale(root,from_=-100,to=100,orient=HORIZONTAL,tickinterval=5,length=400,resolution=2)  # roient 默認的是 x 軸  , 讓roient = HORIZONTAL 設置Y 軸 尺度 . 
 9 s2.pack()
10 
11 def Location_show():
12     print('X軸速度 :'+str(s1.get()))
13     print('Y軸速度 :'+str(s2.get()))
14     
15 
16 Button(root,text='獲取位置',command=Location_show).pack()
17 
18 mainloop()
19 
20 
21  
復制代碼

文本框

復制代碼
 1 from tkinter import *
 2 
 3 
 4 root = Tk()
 5 
 6 text = Text(root ,width=30,height=5) # 這個意思是每行三十個字符  兩行 .
 7 
 8 text.pack()
 9 
10 text.insert(INSERT,"I Love \n")# 第一個表示插入的位置 第二個是內容 其中第一個必須有 , INSERT 是光標所在位置
11 text.insert(END,"Fishc.com !")  # END 表示 在上一次輸入結束的位置繼續 . 
12 
13  
14 
15 mainloop()
復制代碼

 

因為文本框和listbox較為相似所以這里加入滾動條試試 .

復制代碼
 1 from tkinter import *
 2 
 3 
 4 root = Tk()
 5 # 設置 滾動條 控制
 6 sb = Scrollbar(root)  #  在 root 初始曠 上面插入一 插入一個滾動條 . 
 7 sb.pack(side=RIGHT,fill=Y)      #  設置滾動條的位置 . 
 8 
 9 
10 
11 
12 text = Text(root ,width=30,height=10,yscrollcommand=sb.set) # 這個意思是每行三十個字符  兩行 .  將滾動條 綁定在text文本上面 .  下面  txt文本會插入內容 . 
13 
14 text.pack()
15 
16 text.insert(INSERT,"I Love \n")# 第一個表示插入的位置 第二個是內容 其中第一個必須有 , INSERT 是光標所在位置
17 text.insert(END,"Fishc.com !\n")  # END 表示 在上一次輸入結束的位置繼續 . 
18 
19 photo = PhotoImage(file="18.gif") # 打包一個圖片 . 
20 def show():
21     text.image_create(END,image=photo) #   在text 中添加一個 圖片 .
22 button1 = Button(text,text="頂我! ",command=show) # 第一個和第二個的 text 可是不一樣的,
23 text.window_create(INSERT,window=button1)  # 除了 文字是 insert 其余的好像都是 window_create
24 
25 text.pack(side=LEFT,fill=BOTH)
26 sb.config(command=text.yview)            #   滾動條綁定   text的內容 用於  拉動滑塊 反轉內容 . 
27 
28 
29 mainloop()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM