1、首先確認(rèn)你電腦上的python是正常的,同時tkinter模塊安裝正常。如下面圖中所示,輸入python命令可以看到正常的命令行界面,然后執(zhí)行導(dǎo)入命令:
創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)與策劃設(shè)計,安定網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:安定等地區(qū)。安定做網(wǎng)站價格咨詢:13518219792
from tkinter import *
tkinter安裝正常的話就不會報錯,如下面圖中所示:
2、確認(rèn)無誤后,打開python編輯器pycharm,然后新建一個文件,叫做tkinter_t.py。第一個測試內(nèi)容如下面所示,下面我們來依次解釋:
from tkinter import *? ? ? #導(dǎo)入tkinter模塊
Label(text='spam').pack()? # 創(chuàng)建一個Label窗口,顯示一行內(nèi)容是spam
mainloop()? #創(chuàng)建窗口循環(huán)。
3、內(nèi)容編輯完畢,確認(rèn)無誤后,點擊pycharm編輯器最上方的run選項卡。然后再點擊下方的run選項,如下面圖中所示:
4、然后會彈出一個窗口,讓你選擇需要運行的python文件,選擇剛才創(chuàng)建的tkinter_t.py,然后就會開始執(zhí)行。彈出我們的測試窗口。如下面第二張圖中所示,到這里,我們第一步工作就完成了。
5、下面我們來繼續(xù)在第一個的基礎(chǔ)上進(jìn)行優(yōu)化。優(yōu)化后的命令總共分兩段,我們來依次講解,先看第一段:
from tkinter import *
from tkinter.messagebox import showinfo
def reply():? ? showinfo(title='新窗口', message='另一個窗口')
第一個from剛才講過了,第二個from是導(dǎo)入showinfo這個模塊,用來創(chuàng)建一個新窗口,然后在下面定義一個新函數(shù)reply(),函數(shù)的作用就是創(chuàng)建一個新窗口。
6、然后我們再來看第二段代碼:
windows = Tk(
button=Button(windows, text='press', command=reply
button.pack(
windows.mainloop()
首先用Tk()這個模塊創(chuàng)建一個窗口windows,然后定義一個按鈕button,按鈕的名稱是press,按下去以后的響應(yīng)命令command是剛才定義的reply函數(shù)。
然后把button按鈕打包
最后開始窗口循環(huán)。
7、代碼確認(rèn)無誤后,點擊pycharm頁面右上角的tkinter_t.py文件名旁邊的綠色三角按鈕,開始運行代碼。
、
8、如下面圖中所示,剛創(chuàng)建的窗口是個很小的窗口,只顯示了一個按鈕的高度。我們將鼠標(biāo)移動到這個窗口的邊上,把它拉大成第二張圖中所示:
9、然后按一下press按鈕,如下面圖中所示,函數(shù)reply響應(yīng)以后,就創(chuàng)建了一個新窗口。完整代碼如下:
from tkinter import *
from tkinter.messagebox import showinf
def reply()
showinfo(title='新窗口', message='另一個窗口')
windows = Tk(
button=Button(windows, text='press', command=reply
button.pack(
windows.mainloop()
采用的是main函數(shù)對主窗口運行程序完畢自動關(guān)閉的命令:
from tkinter import *def main():
root = Tk()
b = Button(root, text='退出', command=root.quit)
b.pack()
mainloop()if __name__ == '__main__':
main()
擴展資料:
main函數(shù)的應(yīng)用:
程序執(zhí)行的起點,main是相對來說的,如同音學(xué)理論之主調(diào)于泛音,泛音即程序中的除main之外的其他函數(shù),迎合思考方式而生成的而非必定的模式。有主有次,執(zhí)行起來條清縷析,既可將程序模塊化又實現(xiàn)了一個閉合的整體。
模塊化程序設(shè)計方法是把整個程序劃分為若干功能較為單一的程序模塊,然后分別予以實現(xiàn),最后再把所有的程序模塊像搭積木一樣裝配起來。
利用函數(shù)可以實現(xiàn)程序的模塊化,可以大大地減輕編碼工作量。在函數(shù)內(nèi)部或復(fù)合語句塊內(nèi)部定義的 auto 類型變量稱為局部變量。
局部變量的作用域從該局部變量定義的位置開始到本函數(shù)或復(fù)合語句結(jié)束處。局部變量的生存期較短暫。當(dāng)局部變量所在的函數(shù)被調(diào)用時,局部變量內(nèi)存空間被分配,函數(shù)調(diào)用結(jié)束后,局部變量內(nèi)存空間被釋放。
函數(shù)的形參和實參均屬于局部變量,調(diào)用函數(shù)時,形參內(nèi)存空間被分配。函數(shù)調(diào)用結(jié)束后,形參內(nèi)存空間被釋放。C語言函數(shù)參數(shù)傳遞可分為三種情況:簡單變量作為函數(shù)參數(shù)、數(shù)組名作為函數(shù)參數(shù)以及指針作為函數(shù)參數(shù)。
參考資料來源:百度百科-main函數(shù)
有很多種方法,但是很多方法要么這個有問題,要么那個有問題,最后終于找到一種沒問題的方法。記錄一下:
Login.py(登錄窗口)文件
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import *
from PyQt5.QtWidgets import QFileDialog, QMessageBox, QDockWidget, QListWidget
from PyQt5.QtGui import *
from Ui_Login import Ui_Login_Window #由.UI文件生成.py文件后,導(dǎo)入創(chuàng)建的GUI類
from Main import * # Main.py為 主窗口代碼文件
from class_MSSQL import MSSQL
#QtWidgets.QMainWindow:繼承該類方法
class Login_window(QtWidgets.QMainWindow,Ui_Login_Window):
#__init__: 析構(gòu)函數(shù),也就是類被創(chuàng)建后就會預(yù)先加載的項目。
# 馬上運行,這個方法可以用來對你的對象做一些你希望的初始化。
def __init__(self):
#這里需要重載一下Login_window,同時也包含了QtWidgets.QMainWindow的預(yù)加載項。
super(Login_window, self).__init__()
self.setupUi(self)
# 將點擊事件與槽函數(shù)進(jìn)行連接
self.btn_login.clicked.connect(self.btn_login_fuc)
#登錄按鈕 函數(shù)
def btn_login_fuc(self):
#1 獲取輸入的賬戶和密碼
account = self.txt_1.text() # 記得text要打括號()!
password = self.txt_2.text()
if account == "" or password == "":
reply = QMessageBox.warning(self,"警告","賬號密碼不能為空,請輸入!")
return
#2 查詢數(shù)據(jù)庫,判定是否有匹配
ms = MSSQL()
result = ms.Login_result(account, password)
if(len(result) 0):
#1打開新窗口
Ui_Main.show()#2關(guān)閉本窗口
self.close()
else:
reply = QMessageBox.warning(self,"警告","賬戶或密碼錯誤,請重新輸入!")
if __name__ == '__main__': #如果這個文件是主程序。
app = QtWidgets.QApplication(sys.argv) #QApplication相當(dāng)于main函數(shù),也就是整個程序(很多文件)的主入口函數(shù)。對于GUI程序必須至少有一個這樣的實例來讓程序運行。
window = Login_window() #生成一個實例(對象)
Ui_Main = Ui_Main() #生成主窗口的實例
window.show() #有了實例,就得讓它顯示。這里的show()是QWidget的方法,用來顯示窗口。
sys.exit(app.exec_()) # 調(diào)用sys庫的exit退出方法,條件是app.exec_()也就是整個窗口關(guān)閉。
Main.py(主窗口)文件
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from Ui_Main import Ui_MainWindow #由.UI文件生成.py文件后,導(dǎo)入創(chuàng)建的GUI類
import math
from PIL import Image, ImageDraw, ImageFont
import numpy as np
import os
import cv2 as cvcv
from class_Detection import Detection
class Ui_Main(QtWidgets.QMainWindow,Ui_MainWindow):
def __init__(self):
super(Ui_Main, self).__init__()
self.setupUi(self)
# 將點擊事件與槽函數(shù)進(jìn)行連接
self.btn_video.clicked.connect(self.btn_video_fuc)
def btn_video_fuc(self):
filename = QFileDialog.getOpenFileName(self,'open file','./')
self.timer_camera = QTimer(self)
self.cap = cvcv.cv2.VideoCapture(filename[0])
self.timer_camera.timeout.connect(self.show_pic)
self.timer_camera.start(10) #1毫秒
def show_pic(self):
dc = Detection()
success,frame = self.cap.read()
if success:
show = dc.process_image(frame)
showImage = QImage(show.data, show.shape[1], show.shape[0],QImage.Format_RGB888)
self.label.setPixmap(QPixmap.fromImage(showImage))
self.label.setScaledContents(True) #圖片自適應(yīng)
self.timer_camera.start(10)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Ui_Main()
window.show()
sys.exit(app.exec_())