gui编程
程序员文章站
2022-03-08 10:24:03
...
加粗样式import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from GUI编程.work import work
import ctypes
import win32con
from win32process import SuspendThread, ResumeThread
class MainWindow(QMainWindow):
def init(self,):
super().init()
self.font= QFont(“Microsoft YaHei”)
self.font.setBold(True)
self.initUI() # 界面绘制交给InitUi方法
# 禁止窗口拉伸
self.setFixedSize(self.width(), self.height())
def initUI(self):
# 设置窗口的位置和大小
self.setGeometry(1000, 300, 800, 200)
# 设置窗口的标题
self.setWindowTitle(u'亲爱的梅梅!')
# 设置窗口的图标,引用当前目录下的web.png图片
self.setWindowIcon(QIcon('aa.jpg'))
##设置label
label = QLabel(u'请输入网址:',self)
label.move(50, 55) #按钮的位置
# label.resize(200,40)
label.setFont(self.font)
##设置lineedit
self.url = QLineEdit(self)
self.url.move(200, 50) # 按钮的位置
self.url.resize(550, 40)
self.url.setFont(QFont("Microsoft YaHei", 9))
# 这种静态的方法设置一个用于显示工具提示的字体。我们使用10px滑体字体。
# QToolTip.setFont(QFont('SansSerif', 10))
# # 创建一个提示,我们称之为settooltip()方法。我们可以使用丰富的文本格式
# self.setToolTip('点击开始!')
#选择页面数量
labe2 = QLabel(u'爬取页数:', self)
labe2.move(50, 150) # 按钮的位置
labe2.setFont(self.font)
self.page = QLineEdit(self)
self.page.setPlaceholderText(u"页")
self.page.move(200, 140) # 按钮的位置
self.page.resize(60, 40)
self.page.setFont(QFont("Microsoft YaHei" ,9))
# 创建一个PushButton
self.btn = QPushButton(u'确定', self)
# btn.setToolTip('点击开始!')
self.btn.move(600, 140) #按钮的位置
self.btn.resize(100,40)
self.btn.setFont(self.font)
self.btn.setStyleSheet('''
QPushButton{font-family:'Microsoft YaHei';font-size:16px;color:rgb(0,0,0);}
QPushButton{background-color:rgb(255,160,122)}''')
#创建信号槽
self.btn.clicked.connect(self.ok_buttonClicked) #切换成取消
# 点击事件
def ok_buttonClicked(self):
self.btn.close()
# 创建一个PushButton
self.cancel = QPushButton('取消', self)
self.cancel.move(600, 140) # 按钮的位置
self.cancel.resize(100, 40)
self.cancel.setFont(self.font)
self.cancel.setStyleSheet('''
QPushButton{font-family:'Microsoft YaHei';font-size:16px;color:rgb(0,0,0);}
QPushButton{background-color:rgb(255,160,122)}
QPushButton:hover{background-color:rgb(255,0,0)}''')
self.cancel.show()
self.cancel.clicked.connect(self.cancel_buttonClicked)
self.my_thread = MyThread() # 实例化线程对象
self.my_thread.my_signal.connect(self.dowork_reslut) ##线程会把返回值发送到dowork_reslut曹里
# 线程自定义信号连接的槽函数
self.my_thread.start()
def dowork_reslut(self,num):
# 开始work
if num:
QMessageBox.about(self, "亲爱的冬冬", "标标已完成任务!%s"%num)
self.cancel.close()
self.btn.show()
def cancel_buttonClicked(self):
result = QMessageBox.question(self, "亲爱的冬冬", "确定取消任务吗?", QMessageBox.Yes | QMessageBox.No)
if result == QMessageBox.Yes:
ret = ctypes.windll.kernel32.TerminateThread(self.my_thread.handle, 0)
print('终止线程', self.my_thread.handle, ret)
self.cancel.close()
QMessageBox.about(self,"亲爱的冬冬", "任务已经取消!")
self.btn.show()
def on_pushButton_enter_clicked(self):
# 账号判断
if self.lineEdit_account.text() == "":
return
# 密码判断
if self.lineEdit_password.text() == "":
return
# 通过验证,关闭对话框并返回1
self.accept()
class MyThread(QThread):
# python3,pyqt5与之前的版本有些不一样
# 通过类成员对象定义信号对象
my_signal = pyqtSignal(str)
def __init__(self):
super(QThread, self).__init__()
def run(self):
# 拿到线程
try:
self.handle = ctypes.windll.kernel32.OpenThread(
win32con.PROCESS_ALL_ACCESS, False, int(QThread.currentThreadId()))
result = work()
self.my_signal.emit(str(result)) # 释放自定义的信号
# 通过自定义信号把str(self.count)传递给槽函数
except Exception as e:
result = u"未获取到线程!"
self.my_signal.emit(str(result)) #拿不到hadle
if name == “main”:
app = QApplication(sys.argv)
dialog = MainWindow()
dialog.show()
sys.exit(app.exec_())
# app = QApplication(sys.argv)
# man1 = MainWindow1("www",'2')
# man1.show()
# sys.exit(app.exec_())
加粗样式
上一篇: 九章算法 | Google面试题:搜索旋转排序数组
下一篇: GUI编程
推荐阅读
-
C++primer plus 第五章编程练习
-
PHP;Visual Basic .NET;JavaScript_程序员入门必读:编程语言争霸 霸主是他
-
CPrimer Plus第6版第十六章编程练习答案(C语言)(自学记录)
-
Cprimer plus第六版第五章编程题答案
-
C Primer Plus 第6版 第9章 编程练习
-
网络编程 - 使用PHP通过不同页面访问同一主机的cookie传递问题
-
C++ Primer Plus(第六版) 第三章 编程练习
-
C Primer Plus 第6版 第6章 编程练习
-
C++ Primer Plus(第六版) 第四章 编程练习
-
C++ Primer Plus(第六版) 第五章 编程练习