有很多种方法,但是很多方法要么这个有问题,要么那个有问题,最后终于找到一种没问题的方法。记录一下:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5QtCore import
from PyQt5QtWidgets import QFileDialog, QMessageBox, QDockWidget, QListWidget
from PyQt5QtGui import
from Ui_Login import Ui_Login_Window #由UI文件生成py文件后,导入创建的GUI类
from Main import # Mainpy为 主窗口代码文件
from class_MSSQL import MSSQL
#QtWidgetsQMainWindow:继承该类方法
class Login_window(QtWidgetsQMainWindow,Ui_Login_Window):
#__init__: 析构函数,也就是类被创建后就会预先加载的项目。
# 马上运行,这个方法可以用来对你的对象做一些你希望的初始化。
def __init__(self):
#这里需要重载一下Login_window,同时也包含了QtWidgetsQMainWindow的预加载项。
super(Login_window, self)__init__()
selfsetupUi(self)
# 将点击事件与槽函数进行连接
selfbtn_loginclickedconnect(selfbtn_login_fuc)
#登录按钮 函数
def btn_login_fuc(self):
#1 获取输入的账户和密码
account = selftxt_1text() # 记得text要打括号()!
password = selftxt_2text()
if account == "" or password == "":
reply = QMessageBoxwarning(self,"警告","账号密码不能为空,请输入!")
return
#2 查询数据库,判定是否有匹配
ms = MSSQL()
result = msLogin_result(account, password)
if(len(result) > 0):
#1打开新窗口
Ui_Mainshow()#2关闭本窗口
selfclose()
else:
reply = QMessageBoxwarning(self,"警告","账户或密码错误,请重新输入!")
if __name__ == '__main__': #如果这个文件是主程序。
app = QtWidgetsQApplication(sysargv) #QApplication相当于main函数,也就是整个程序(很多文件)的主入口函数。对于GUI程序必须至少有一个这样的实例来让程序运行。
window = Login_window() #生成一个实例(对象)
Ui_Main = Ui_Main() #生成主窗口的实例
windowshow() #有了实例,就得让它显示。这里的show()是QWidget的方法,用来显示窗口。
sysexit(appexec_()) # 调用sys库的exit退出方法,条件是appexec_()也就是整个窗口关闭。
Mainpy(主窗口)文件
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5QtCore import
from PyQt5QtWidgets import
from PyQt5QtGui import
from Ui_Main import Ui_MainWindow #由UI文件生成py文件后,导入创建的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(QtWidgetsQMainWindow,Ui_MainWindow):
def __init__(self):
super(Ui_Main, self)__init__()
selfsetupUi(self)
# 将点击事件与槽函数进行连接
selfbtn_videoclickedconnect(selfbtn_video_fuc)
def btn_video_fuc(self):
filename = QFileDialoggetOpenFileName(self,'open file','/')
selftimer_camera = QTimer(self)
selfcap = cvcvcv2VideoCapture(filename[0])
selftimer_cameratimeoutconnect(selfshow_pic)
selftimer_camerastart(10) #1毫秒
def show_pic(self):
dc = Detection()
success,frame = selfcapread()
if success:
show = dcprocess_image(frame)
showImage = QImage(showdata, showshape[1], showshape[0],QImageFormat_RGB888)
selflabelsetPixmap(QPixmapfromImage(showImage))
selflabelsetScaledContents(True) #自适应
selftimer_camerastart(10)
if __name__ == '__main__':
app = QtWidgetsQApplication(sysargv)
window = Ui_Main()
windowshow()
sysexit(appexec_())
QT4和QT5版本的头文件不同,需要把QT4中的头文件#include <QtGui/QHBoxLayout>改为#include <QtWidgets/QHBoxLayout>,或者把安装的QT版本降为程序所对应的QT版本。
qt使用的是gcc的编译器,准确的说,是g++编译器。
使用qt是可以写C语言的程序的,因为g++编译器,或者说所有的C++编译器,均可以兼容大部分的C语言程序,只在关键字和void 指针转换上略有区别。
不过,qt的强大在于其C++界面,所以用qt来写C程序,并不是好的选择。
总结就是,能用,但是不好用。
弄了一下午的qt,到现在总算出来效果了,下面的代码,添加了个滑动条,拖拽可以实现窗体透明效果,button自然就更不在话下了,由于对qt不熟悉(答案基本是doc + google出来的),所以细节不好说,呵呵,事件是connect加上的,而要加控件,需要加一个布局吧。
from PyQt4 import QtCore, QtGui
from PyQt4QtGui import
from PyQt4QtCore import
class MyForm(QWidget):
def __init__(self, parent=None):
super(MyForm,self)__init__(parent)
selfpix = QPixmap("macpng")
selfresize(selfpixsize())
selfsetMask(selfpixmask())
slider = QSlider(QtHorizontal, self)
slidervalueChangedconnect(selfsetAlpha)
layout = QVBoxLayout()
layoutaddWidget(slider)
selfsetLayout(layout)
def setAlpha(self, value):
selfsetWindowOpacity((100 - value)/100)
def paintEvent(self,event):
painter = QPainter(self)
painterdrawPixmap(0,0,selfpixwidth(),selfpixheight(),selfpix)
app = QApplication([])
form = MyForm()
formshow()
appexec_()
以上就是关于python关闭主页面返回登录界面全部的内容,包括:python关闭主页面返回登录界面、vs2010新建QT项目中,引用#include <QtGui/QApplication>出“Error! 无法打开源文件QtGui/QApplication”、qt 只能写c++程序吗,不能写c语言的程序吗,要写c只能用 gtk吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)