A. python編程急求!!:在tkinter中,怎樣將函數與不同的button鏈接,使點擊選項後在彈窗中執行相應函數
def func():
pass
btn = Button(root,text = "xxx",command = func)
btn_2 = Button(root,text = "xxx",command = func)
B. python與tkinter編程哪個有優勢
pyqt還不錯,它是Python語言的GUI編程解決方案之一。可以用來代替Python內置的Tkinter。其它替代者還有PyGTK、wxPython等
優點:
PyQt的API與Qt類似,Qt的文檔通常仍然可以應用於PyQt。因此,PyQt的文檔比PyGTK、wxPython、Tkinter等GUI編程庫的文檔豐富得多。
如果程序員具備使用Qt的經驗,一般很快就可以過渡到PyQt上。而使用PyQt的程序員,如果同時精通C++的話,也可以很快地過渡到Qt平台上。
利用SIP,大多數為Qt開發的控制項可以方便地port到PyQt。——然而,SIP也需要一些學習成本。
有方便的周邊工具支持PyQt。如QtDesigner,可以使用拖拉式的方法來設計界面,簡單易用。Eric4,一個使用PyQt設計的Python IDE,對PyQt有特殊的支持。
C. python Tkinter編程問題
可以用這個frame的winfo_width()方法獲得實際寬度,winfo_height()可以獲得高度,比如:
fr=Frame(tk)
fr.pack(side=TOP, fill=BOTH, expand=True)
print "frame size before update: ", fr.winfo_width(), fr.winfo_height()
fr.update()
print "frame size after update: ", fr.winfo_width(), fr.winfo_height()
D. Python2.X Tkinter編程
package Sort;
import java.util.Arrays;
import java.util.Random;
public class MergeSort {
public void sort(int array[]){
if(array.length== 0 ||array.length == 1)
return;
int mid = array.length/2;
int a[] = Arrays.OfRange(array, 0, mid);
int b[] = Arrays.OfRange(array, mid, array.length);
E. Python編程的tkinter窗口編譯成exe文件無法正確執行
最後一行加括弧,改成root.mainloop()
F. python用tkinter創建一個登錄界面
import tkinter
import tkinter.ttk
import tkinter.messagebox
root = tkinter.Tk()
root.title("登錄")
userlabel = tkinter.Label(root,text="用戶名:")
passwordlabel = tkinter.Label(root,text="密碼:")
userlabel.grid(row=0,column=0)
passwordlabel.grid(row=1,column=0)
userentry = tkinter.ttk.Entry(root)
passwordentry = tkinter.ttk.Entry(root,show="●")
userentry.grid(row=0,column=1,padx=10,pady=2)
passwordentry.grid(row=1,column=1,padx=10,pady=2)
def get():
tkinter.messagebox.showinfo("結果","用戶名:" + userentry.get() + "
密碼:" + passwordentry.get())
yes = tkinter.ttk.Button(root,text="確定",command=get)
yes.grid(row=2,column=1)
root.mainloop()
效果圖
G. Python怎麼將tkinter 輸入框中輸入的字元串內容轉換為 整數類型
設定變數類型,收到輸入的內容之後進行轉換,如下:
import tkinter
windows = tkinter.Tk() # 實例化窗口類
windows.title('Demo') # 窗口標題
def sub(): # 創建相加函數
number1 = int(ent1.get()) # 獲得兩個按鈕的內容轉換為字元串類型
number2 = int(ent2.get())
number3 = number1 + number2
var.set(number3)
var = tkinter.IntVar() # 定義變數類型
ent1 = tkinter.Entry(windows)
ent2 = tkinter.Entry(windows)
ent3 = tkinter.Entry(windows,textvariable=var)
ent1.pack(side = tkinter.LEFT,padx=5) # 包裝定位控制項
ent2.pack(side = tkinter.LEFT,padx=5)
ent3.pack(side = tkinter.LEFT,padx=5)
button1 = tkinter.Button(windows,text='計算',command = sub).pack() # 綁定信號
button2 = tkinter.Button(windows,text='退出',command = windows.destroy).pack()
windows.mainloop() # 循環保持窗口運行
H. Python 中用 Tkinter GUI編程
可以使用sqlite,下面是使用方法。
導入PythonSQLITE資料庫模塊
Python2.5之後,內置了SQLite3,成為了內置模塊,這給我們省了安裝的功夫,只需導入即可~
importsqlite3
2.創建/打開資料庫
在調用connect函數的時候,指定庫名稱,如果指定的資料庫存在就直接打開這個資料庫,如果不存在就新創建一個再打開。
cx=sqlite3.connect("E:/test.db")
也可以創建資料庫在內存中。
con=sqlite3.connect(":memory:")
3.資料庫連接對象
打開資料庫時返回的對象cx就是一個資料庫連接對象,它可以有以下操作:
commit()--事務提交
rollback()--事務回滾
close()--關閉一個資料庫連接
cursor()--創建一個游標
關於commit(),如果isolation_level隔離級別默認,那麼每次對資料庫的操作,都需要使用該命令,你也可以設置isolation_level=None,這樣就變為自動提交模式。
4.使用游標查詢資料庫
我們需要使用游標對象SQL語句查詢資料庫,獲得查詢對象。通過以下方法來定義一個游標。
cu=cx.cursor()
游標對象有以下的操作:
execute()--執行sql語句
executemany--執行多條sql語句
close()--關閉游標
fetchone()--從結果中取一條記錄,並將游標指向下一條記錄
fetchmany()--從結果中取多條記錄
fetchall()--從結果中取出所有記錄
scroll()--游標滾動
1.建表
cu.execute("createtablecatalog(idintegerprimarykey,pidinteger,namevarchar(10)UNIQUE,nicknametextNULL)")
上面語句創建了一個叫catalog的表,它有一個主鍵id,一個pid,和一個name,name是不可以重復的,以及一個nickname默認為NULL。
2.插入數據
請注意避免以下寫法:
#Neverdothis--insecure會導致注入攻擊
pid=200
c.execute("...wherepid='%s'"%pid)
正確的做法如下,如果t只是單個數值,也要採用t=(n,)的形式,因為元組是不可變的。
fortin[(0,10,'abc','Yu'),(1,20,'cba','Xu')]:
cx.execute("insertintocatalogvalues(?,?,?,?)",t)
簡單的插入兩行數據,不過需要提醒的是,只有提交了之後,才能生效.我們使用資料庫連接對象cx來進行提交commit和回滾rollback操作.
cx.commit()
3.查詢
cu.execute("select*fromcatalog")
要提取查詢到的數據,使用游標的fetch函數,如:
In[10]:cu.fetchall()
Out[10]:[(0,10,u'abc',u'Yu'),(1,20,u'cba',u'Xu')]
如果我們使用cu.fetchone(),則首先返回列表中的第一項,再次使用,則返回第二項,依次下去.
4.修改
In[12]:cu.execute("updatecatalogsetname='Boy'whereid=0")
In[13]:cx.commit()
注意,修改數據以後提交
5.刪除
cu.execute("deletefromcatalogwhereid=1")
cx.commit()
6.使用中文
請先確定你的IDE或者系統默認編碼是utf-8,並且在中文前加上u
x=u'魚'
cu.execute("updatecatalogsetname=?whereid=0",x)
cu.execute("select*fromcatalog")
cu.fetchall()
[(0,10,u'u9c7c',u'Yu'),(1,20,u'cba',u'Xu')]
如果要顯示出中文字體,那需要依次列印出每個字元串
In[26]:foritemincu.fetchall():
....:forelementinitem:
....:printelement,
....:
010魚Yu
120cbaXu
7.Row類型
Row提供了基於索引和基於名字大小寫敏感的方式來訪問列而幾乎沒有內存開銷。原文如下:
sqlite3.Rowprovidesbothindex-basedandcase-insensitivename-.-basedapproachorevenadb_rowbasedsolution.
Row對象的詳細介紹
classsqlite3.Row
_factoryforConnectionobjects..
,iteration,representation,equalitytestingandlen().
,theycompareequal.
Changedinversion2.6:Addediterationandequality(hashability).
keys()
.Immediatelyafteraquery,.description.
Newinversion2.6.
下面舉例說明
In[30]:cx.row_factory=sqlite3.Row
In[31]:c=cx.cursor()
In[32]:c.execute('select*fromcatalog')
Out[32]:<sqlite3.Cursorobjectat0x05666680>
In[33]:r=c.fetchone()
In[34]:type(r)
Out[34]:<type'sqlite3.Row'>
In[35]:r
Out[35]:<sqlite3.Rowobjectat0x05348980>
In[36]:printr
(0,10,u'u9c7c',u'Yu')
In[37]:len(r)
Out[37]:4
In[39]:r[2]#使用索引查詢
Out[39]:u'u9c7c'
In[41]:r.keys()
Out[41]:['id','pid','name','nickname']
In[42]:foreinr:
....:printe,
....:
010魚Yu
使用列的關鍵詞查詢
In[43]:r['id']
Out[43]:0
In[44]:r['name']
Out[44]:u'u9c7c'
I. python怎麼用tkinter
Tkinter 是使用 python 進行窗口視窗設計的模塊。Tkinter模塊("Tk 介面")是Python的標准Tk GUI工具包的介面。作為 python 特定的GUI界面,是一個圖像的窗口,tkinter是python 自帶的,可以編輯的GUI界面,我們可以用GUI 實現很多直觀的功能,比如想開發一個計算器,如果只是一個程序輸入,輸出窗口的話,是沒用用戶體驗的。所有開發一個圖像化的小窗口,就是必要的。
對於稍有GUI編程經驗的人來說,Python的Tkinter界面庫是非常簡單的。python的GUI庫非常多,選擇Tkinter,一是最為簡單,二是自帶庫,不需下載安裝,隨時使用,三則是從需求出發,Python作為一種腳本語言,一種膠水語言,一般不會用它來開發復雜的桌面應用,它並不具備這方面的優勢,使用Python,可以把它作為一個靈活的工具,而不是作為主要開發語言,那麼在工作中,需要製作一個小工具,肯定是需要有界面的,不僅自己用,也能分享別人使用,在這種需求下,Tkinter是足夠勝任的!
J. PYTHON tkinter編程,請懂的人幫忙:
界面設計有一個基本原則,同樣適用於tkinter,也就是說界面是單線程的。所以界面的所有事件,如果特別是耗時,不能幾毫秒解決。就需要交給後台線程去做。後台線程做完了後就將結果放在一個變數里,再通常消息通知界面刷新。這樣界面就不會卡住了。
doevents的原理是。強制停下當前線程,然後處處理一下窗口消息隊列里的事件。不過有時候這個方法並不靈,也會出現界面卡死。
所以你綁定了事件,然後觸發成功,也執行了。不過你執行的這段代碼一直在循環運行,沒有很快退出,這樣界面當然就沒有辦法刷新了。
你可以啟動一個線程去做你的那件事情。