欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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_())

加粗样式

相关标签: restful http