我用pyqt5写了一个界面,但是不知道怎么接收客户端收到的信息 5C

我用pyqt5写了一个界面,其他人写的客户端,和服务端的模块,
但是现在我有点蒙,怎么把客户端接收到的给我的界面啊,,,,,,,

2个回答

from socket import *
import threading
import sys
import os
import signal

def denglu():

while True:

    name = input("请输入登录姓名:")
    mima = input("请输入密码:")
    msg = "D %s %s" % (name, mima)

    HOST = '0.0.0.0'
    PORT = 8888
    ADDR = (HOST, PORT)
    s = socket(AF_INET, SOCK_STREAM)
    s.connect((HOST, PORT))

    # 发送登录请求
    s.send(msg.encode())
    # 判断是否可以登录
    data = s.recv(1024).decode()
    if data[0:2] == 'OK':
        return s, name, data
        break

    else:
        # 不能登录的原因
        print(data)
        s.close()
        if data == "您输入的密码错误" or "您输入的用户名不存在":
            continue

def zhuce():

while True:
    name = input("请输入注册姓名:")
    mima = input("请输入密码:")
    msg = "L %s %s" % (name, mima)

    HOST = '0.0.0.0'
    PORT = 8888
    ADDR = (HOST, PORT)
    s = socket(AF_INET, SOCK_STREAM)
    s.connect((HOST, PORT))
    # 发送登录请求
    s.send(msg.encode())
    # 判断是否可以登录

    data = s.recv(1024).decode()
    if data == "用户已存在":
        s.close()
    print(data)
    break

子进程

def do_child(s, name):
while True:
text = "\n"+input()
# 退出
if text.strip() == 'quit':
msg = 'Q ' + name
s.send(msg.encode())
# 从子进程中杀死父进程
os.kill(os.getppid(), signal.SIGKILL)
sys.exit("退出聊天室")
# 聊天
else:
msg = "R %s %s" % (name, text)
s.send(msg.encode())

父进程接受服务器所有消息

def do_parent(s):
while True:
msg = s.recv(1024).decode()

    print(msg)

def chat_one():
pass

def chat_record():
pass

def main():
# 创建套接字

# 启动客户端即需要登录或注册
while True:

    xuanze = input("鼠标(D)登录,鼠标(L)注册")
    if xuanze == 'D':

        s, name, data = denglu()
        print(data)

        break

    if xuanze == 'L':
        t1 = threading.Thread(target=zhuce)
        t1.start()
        t1.join()

# 创建父子进程用于发送和接受消息
pid = os.fork()
if pid < 0:
    sys.exit("创建子进程失败")
elif pid == 0:
    do_child(s, name)
else:
    do_parent(s)

if name == "__main__":
main()

这个是主界面
(还没完成,想试试,没有吧包都引进来所以不能运行)
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5 import QtCore, QtGui, QtWidgets
from Ui_mainwindows import Ui_MainWindow
import dengru, zhuce

class myLabel(QLabel):
def init(self,parent = None):
super(myLabel,self).__init__(parent)

def mousePressEvent(self, e):##重载一下鼠标点击事件
    print ('you clicked the label')
    """
    先调用对话宽
    """
    self.another=dengru.deng_ru()
    self.another.show() 

def mouseReleaseEvent(self, QMouseEvent):
    print ('you have release the mouse')

class MainWindow(QMainWindow, Ui_MainWindow):
"""
Class documentation goes here.
"""
def init(self, parent=None):
"""
Constructor

    @param parent reference to the parent widget
    @type QWidget
    """
    super(MainWindow, self).__init__(parent)
    self.setupUi(self)
    self.add()
    self.Show()


@pyqtSlot()
def on_pushButton_3_clicked(self):
    """
    Slot documentation goes here.
    保存记录
    """
    # TODO: not implemented yet
    try:
        filename=QFileDialog.getSaveFileName(self,'save file','/')
        with open(filename[0],'w') as f:
            my_text=self.textBrowser_2.toPlainText()
            f.write(my_text)
            f.close()
    except OSError:
        pass

@pyqtSlot()
def on_pushButton_5_clicked(self):
    """
    Slot documentation goes here.
    清屏
    """
    # TODO: not implemented yet
    self.textBrowser_2.setText("")

@pyqtSlot()
def on_pushButton_4_clicked(self):
    """
    Slot documentation goes here.
    打开文件
    """
    # TODO: not implemented yet
    try:
        filename=QFileDialog.getOpenFileName(self,'open file','/')
        with open(filename[0],'r') as f:
            my_txt=f.read()
            self.textEdit.setPlainText(my_txt)
            f.close()
    except OSError:
        pass
@pyqtSlot()
def on_pushButton_2_clicked(self):
    """
    Slot documentation goes here.
    清除
    """
    # TODO: not implemented yet
    self.textEdit.setText("")

@pyqtSlot()
def on_pushButton_clicked(self):
    """
    Slot documentation goes here.
    发送
    """
    """这里可以用登入信息控制发送信息,以便区别登入
    (先设置一个变量,没有登入为flase,登入为true,任何用于
    登入之后每次发送信息用)"""
    text= self.textEdit.toPlainText()
    self.textBrowser_2.append("111:"+text)
    self.textEdit.setText("")
    return txet

@pyqtSlot()
def on_pushButton_7_clicked(self):
    """
    Slot documentation goes here.
    官网
    """
    # TODO: not implemented yet
    raise NotImplementedError

@pyqtSlot()
def on_pushButton_8_clicked(self):
    """
    Slot documentation goes here.
    注册
    返回一个值给客户端
    """
    # TODO: not implemented yet
    self.another=zhuce.ZhuCe()
    self.another.show() 

@pyqtSlot()
def on_pushButton_6_clicked(self):
    """
    Slot documentation goes here.
    登入按钮
    调用另一个py的类生成对象,然后对象调用show()
    返回一个值给客户端
    """
    # TODO: not implemented yet
    self.another=dengru.deng_ru()
    self.another.show() 


def closeEvent(self, event):
    """
    退出弹框
    """

    reply = QMessageBox.question(self, '信息', '确认退出吗?', 
        QMessageBox.Yes | QMessageBox.No, QMessageBox.No)

    if reply == QMessageBox.Yes:
        event.accept()
    else:
        event.ignore()




def add(self):
    label1 = myLabel(self)
    label1.setText("TextLabe1")
    self.verticalLayout_3.addWidget(label1)

    label1 = myLabel(self)
    label1.setText("TextLabe2")
    self.verticalLayout_3.addWidget(label1)




def  Show(self):
    name="222:"
    data ="xxxx"
    self.textBrowser_2.append(name+data)

if name == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
ui = MainWindow()
ui.show()
sys.exit(app.exec_())

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
我用pyqt写的界面,同学用套接字写客户端,另一个人用套接字写服务端,谁来组合程序啊?
我用pyqt写的界面,同学用套接字写的客户端,另一个人用套接字写的服务端(就是最简单的老师在课上用python跑的那个聊天的群聊客户端和服务端),我想知道谁来组合程序啊?难道是我这个写界面的?他们都吧代码扔给我,我去,本来写pyqt界面就是临时学的,搞了一下,现在好懵,不知道从何下手,难道公司里也是写界面的搞? 我真的无从下手感觉
用pyqt5 编写一个可实现账号密码登录的界面
用pyqt5 编写一个可实现账号密码登录的界面,点击登录可跳转主界面的程序代码。刚学,弄了好几天都没头绪,求大神帮帮忙。
用matplotlib生成好的图表怎么用pyqt5显示在界面上?
我已经用python3写好了调用matplotlib生成的数据图表,现在想做一个界面,在界面里的某一个位置显示这张图,在网上看了很多matplotlib跟pyqt5关联的例子,自己尝试都没有显示成功,求大神指点
PyQt5 界面与逻辑分离问题
PyCharm中使用QT Design制作了一个简单的界面,通过PyUIC,将界面.ui文件转换为.py文件后,最后参考网上实例制作了如下一个逻辑文件 -------------------- import sys from PyQt5.QtWidgets import QApplication, QMainWindow from testa import * class MyMainWindow(QtWidgets.QMainWindow,Ui_MainWindow): def __init__(self,parent = None): super(MyMainWindow, self).__init__(parent) self.setupUi(self) if __name__ == '__main__': app = QApplication(sys.argv) myWin = MyMainWindow() myWin.show() sys.exit(app.exec_()) -------------------- 问题. 运行后总出现问题:NameError: name 'Ui_MainWindow' is not defined Ui_MainWindow处为红色波浪线,提示为Unresolved reference 'Ui_MainWindow'....的错误 网上答案都是包路径错误,自己设置了也没有用。 求高手解答,新手勿喷
最近在学习pyqt5,使用了qdarkstylesheet,但是出现了问题
源代码: import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * import qdarkstyle class Demo(QWidget): def __init__(self,parent=None): super(Demo,self).__init__(parent) self.setWindowTitle("Demo") self.resize(500,500) self.move(200,200) layout=QHBoxLayout() self.setLayout(layout) layout.addWidget(QPushButton("button1")) layout.addWidget(QPushButton("button2")) layout.addWidget(QPushButton("button3")) if __name__=='__main__': app=QApplication(sys.argv) form=Demo() app.setStyleSheet(qdarkstyle.load_stylesheet_pyqt5()) #app.setStyleSheet(qdarkstyle.load_stylesheet_pyqt5()) form.show() sys.exit(app.exec_()) 报错显示: AttributeError: module 'qdarkstyle' has no attribute 'load_stylesheet_pyqt5'
最近开始学习PYQT5,请问有没有学习书籍或者资料可供参考
感觉和PYQT4的差异较大,PYQT4的资料较多,但是PYQT5的较少,麻烦各位前辈了。
用PyQt5,通过url获取页面,然后把整个页面截屏
import sys from PyQt5.QtCore import QUrl from PyQt5.QtWidgets import QApplication from PyQt5.QtWebEngineWidgets import QWebEnginePage, QWebEngineView app = QApplication(sys.argv) browser = QWebEngineView() browser.load(QUrl("http://news.baidu.com/?tn=news")) browser.show() app.exec_() r = WebRender(url) html = r.frame.toHtml() page = etree.HTML(html.encode('utf-8')) 这个页面整个截屏
帮我运行一下PYQT5的界面代码,点击菜单中的打开,看是否弹出文件对话框
文件1: jiemian1.py ``` # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'jiemian1.ui' # # Created by: PyQt5 UI code generator 5.10.1 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 600) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23)) self.menubar.setObjectName("menubar") self.menu_F = QtWidgets.QMenu(self.menubar) self.menu_F.setObjectName("menu_F") self.menu_E = QtWidgets.QMenu(self.menubar) self.menu_E.setObjectName("menu_E") self.menu_V = QtWidgets.QMenu(self.menubar) self.menu_V.setObjectName("menu_V") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.toolBar = QtWidgets.QToolBar(MainWindow) self.toolBar.setObjectName("toolBar") MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar) self.fileOpenAction = QtWidgets.QAction(MainWindow) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/tubiao/open.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.fileOpenAction.setIcon(icon) self.fileOpenAction.setObjectName("fileOpenAction") self.fileNewAction = QtWidgets.QAction(MainWindow) icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap(":/tubiao/new.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.fileNewAction.setIcon(icon1) self.fileNewAction.setObjectName("fileNewAction") self.fileCloseAction = QtWidgets.QAction(MainWindow) icon2 = QtGui.QIcon() icon2.addPixmap(QtGui.QPixmap(":/tubiao/close.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.fileCloseAction.setIcon(icon2) self.fileCloseAction.setObjectName("fileCloseAction") self.addWinaction = QtWidgets.QAction(MainWindow) self.addWinaction.setObjectName("addWinaction") self.menu_F.addAction(self.fileOpenAction) self.menu_F.addAction(self.fileNewAction) self.menu_F.addAction(self.fileCloseAction) self.menu_E.addSeparator() self.menubar.addAction(self.menu_F.menuAction()) self.menubar.addAction(self.menu_E.menuAction()) self.menubar.addAction(self.menu_V.menuAction()) self.toolBar.addAction(self.addWinaction) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "声学包数据库系统")) self.menu_F.setTitle(_translate("MainWindow", "文件(F)")) self.menu_E.setTitle(_translate("MainWindow", "编辑(E)")) self.menu_V.setTitle(_translate("MainWindow", "视图(V)")) self.toolBar.setWindowTitle(_translate("MainWindow", "toolBar")) self.fileOpenAction.setText(_translate("MainWindow", "打开")) self.fileOpenAction.setShortcut(_translate("MainWindow", "Alt+O")) self.fileNewAction.setText(_translate("MainWindow", "新建")) self.fileNewAction.setShortcut(_translate("MainWindow", "Alt+C")) self.fileCloseAction.setText(_translate("MainWindow", "关闭")) self.fileCloseAction.setShortcut(_translate("MainWindow", "Alt+C")) self.addWinaction.setText(_translate("MainWindow", "添加窗体")) import ICON_rc ``` 文件2:calljiemian1.py ``` import sys from PyQt5.QtWidgets import * from jiemian1 import Ui_MainWindow class MainForm(QMainWindow,Ui_MainWindow): def __init__(self): super(MainForm,self).__init__() self.setupUi(self) self.fileCloseAction.triggered.connect(self.close) self.fileOpenAction.triggered.connect(self.openMsg) def openMsg(): print(1) file,ok= QFileDialog.getOpenFileName(self,"打开","E:\声学包数据库\声学包\界面测试数据","All Files (*);;Text Files (*.txt)") self.statusbar.showMessage(file) if __name__=="__main__": app= QApplication(sys.argv) win= MainForm() win.show() sys.exit(app.exec_()) ```
请问各位大佬:如何保存pyqt5界面的内容并在下次打开界面时显示保存的内容?
举个例子:界面A中有文本输入框、下拉框等控件,并相应地输入有文本、下拉选项等。 现需要关闭界面A,然后在下一次打开界面A时能够自动地显示前面的输入内容。 请问各位大佬如何能实现上述功能!感谢!
eric6 与 pyqt5 编写界面问题
eric6 与 pyqt5 编写界面,因为需求我在已经由ui文件编译好的py文件改了一些代码, 可是要继续在ui文件布局操作,编译后之前在py文件里改的代码又变回原来的了, 各位大神有什么办法可以解决???或者,在eric6里怎么把py文件改成ui文件??
pyqt5单击获取tableview选中行的所有内容
pyqt5单击获取tableview选中行的所有内容,磨了半天还是没弄出来。
pygame中调用pyqt5写的设置界面,只能显示一次不能多次启动,求解?
最近学习python用pygame做了一个小游戏,在拓展游戏设置和网络对战功能时,用pyqt5,Qt Designer设计了游戏设置和网络界面,发现第一次启动时能正常调用界面,但关闭之后不能再次打开,尝试过直接调用和新开线程调用,均不能解决问题,求解!? #窗口文件代码 #窗口界面代码 ``` class Ui_dialog(object): def setupUi(self, dialog): dialog.setObjectName("dialog") dialog.setWindowModality(QtCore.Qt.NonModal) dialog.resize(480, 320) self.buttonBox = QtWidgets.QDialogButtonBox(dialog) self.buttonBox.setGeometry(QtCore.QRect(240, 270, 221, 41)) self.buttonBox.setOrientation(QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok) self.buttonBox.setObjectName("buttonBox") self.verticalLayoutWidget = QtWidgets.QWidget(dialog) self.verticalLayoutWidget.setGeometry(QtCore.QRect(9, 9, 461, 251)) self.verticalLayoutWidget.setObjectName("verticalLayoutWidget") self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") self.label_2 = QtWidgets.QLabel(self.verticalLayoutWidget) self.label_2.setObjectName("label_2") self.verticalLayout.addWidget(self.label_2) self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.radioButton_3 = QtWidgets.QRadioButton(self.verticalLayoutWidget) self.radioButton_3.setEnabled(True) self.radioButton_3.setTabletTracking(False) self.radioButton_3.setChecked(True) self.radioButton_3.setObjectName("radioButton_3") self.buttonGroup = QtWidgets.QButtonGroup(dialog) self.buttonGroup.setObjectName("buttonGroup") self.buttonGroup.addButton(self.radioButton_3) self.horizontalLayout.addWidget(self.radioButton_3) self.radioButton = QtWidgets.QRadioButton(self.verticalLayoutWidget) self.radioButton.setObjectName("radioButton") self.buttonGroup.addButton(self.radioButton) self.horizontalLayout.addWidget(self.radioButton) self.verticalLayout.addLayout(self.horizontalLayout) self.label = QtWidgets.QLabel(self.verticalLayoutWidget) self.label.setObjectName("label") self.verticalLayout.addWidget(self.label) self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.radioButton_4 = QtWidgets.QRadioButton(self.verticalLayoutWidget) self.radioButton_4.setChecked(True) self.radioButton_4.setObjectName("radioButton_4") self.buttonGroup_2 = QtWidgets.QButtonGroup(dialog) self.buttonGroup_2.setObjectName("buttonGroup_2") self.buttonGroup_2.addButton(self.radioButton_4) self.horizontalLayout_2.addWidget(self.radioButton_4) self.radioButton_5 = QtWidgets.QRadioButton(self.verticalLayoutWidget) self.radioButton_5.setObjectName("radioButton_5") self.buttonGroup_2.addButton(self.radioButton_5) self.horizontalLayout_2.addWidget(self.radioButton_5) self.radioButton_10 = QtWidgets.QRadioButton(self.verticalLayoutWidget) self.radioButton_10.setObjectName("radioButton_10") self.buttonGroup_2.addButton(self.radioButton_10) self.horizontalLayout_2.addWidget(self.radioButton_10) self.radioButton_11 = QtWidgets.QRadioButton(self.verticalLayoutWidget) self.radioButton_11.setObjectName("radioButton_11") self.buttonGroup_2.addButton(self.radioButton_11) self.horizontalLayout_2.addWidget(self.radioButton_11) self.radioButton_6 = QtWidgets.QRadioButton(self.verticalLayoutWidget) self.radioButton_6.setObjectName("radioButton_6") self.buttonGroup_2.addButton(self.radioButton_6) self.horizontalLayout_2.addWidget(self.radioButton_6) self.verticalLayout.addLayout(self.horizontalLayout_2) self.label_3 = QtWidgets.QLabel(self.verticalLayoutWidget) self.label_3.setObjectName("label_3") self.verticalLayout.addWidget(self.label_3) self.horizontalSlider = QtWidgets.QSlider(self.verticalLayoutWidget) self.horizontalSlider.setMaximum(10) self.horizontalSlider.setProperty("value", 5) self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal) self.horizontalSlider.setTickInterval(0) self.horizontalSlider.setObjectName("horizontalSlider") self.verticalLayout.addWidget(self.horizontalSlider) self.label_4 = QtWidgets.QLabel(self.verticalLayoutWidget) self.label_4.setObjectName("label_4") self.verticalLayout.addWidget(self.label_4) self.horizontalLayout_3 = QtWidgets.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.radioButton_7 = QtWidgets.QRadioButton(self.verticalLayoutWidget) self.radioButton_7.setObjectName("radioButton_7") self.buttonGroup_3 = QtWidgets.QButtonGroup(dialog) self.buttonGroup_3.setObjectName("buttonGroup_3") self.buttonGroup_3.addButton(self.radioButton_7) self.horizontalLayout_3.addWidget(self.radioButton_7) self.radioButton_8 = QtWidgets.QRadioButton(self.verticalLayoutWidget) self.radioButton_8.setChecked(True) self.radioButton_8.setObjectName("radioButton_8") self.buttonGroup_3.addButton(self.radioButton_8) self.horizontalLayout_3.addWidget(self.radioButton_8) self.verticalLayout.addLayout(self.horizontalLayout_3) self.retranslateUi(dialog) self.buttonBox.accepted.connect(dialog.accept) self.buttonBox.rejected.connect(dialog.reject) self.radioButton_5.clicked.connect(self.gamedj) QtCore.QMetaObject.connectSlotsByName(dialog) dialog.setTabOrder(self.radioButton_3, self.radioButton) dialog.setTabOrder(self.radioButton, self.radioButton_4) dialog.setTabOrder(self.radioButton_4, self.radioButton_5) dialog.setTabOrder(self.radioButton_5, self.radioButton_10) dialog.setTabOrder(self.radioButton_10, self.radioButton_11) dialog.setTabOrder(self.radioButton_11, self.radioButton_6) dialog.setTabOrder(self.radioButton_6, self.horizontalSlider) dialog.setTabOrder(self.horizontalSlider, self.radioButton_7) dialog.setTabOrder(self.radioButton_7, self.radioButton_8) def retranslateUi(self, dialog): _translate = QtCore.QCoreApplication.translate dialog.setWindowTitle(_translate("dialog", "游戏设置")) self.label_2.setText(_translate("dialog", "游戏模式选择:")) self.radioButton_3.setText(_translate("dialog", "普通阶")) self.radioButton.setText(_translate("dialog", "可变阶")) self.label.setText(_translate("dialog", "游戏阶数(最高阶):")) self.radioButton_4.setText(_translate("dialog", "4")) self.radioButton_5.setText(_translate("dialog", "5")) self.radioButton_10.setText(_translate("dialog", "6")) self.radioButton_11.setText(_translate("dialog", "7")) self.radioButton_6.setText(_translate("dialog", "8")) self.label_3.setText(_translate("dialog", "游戏速度选择:")) self.label_4.setText(_translate("dialog", "道具模式选择:")) self.radioButton_7.setText(_translate("dialog", "开启")) self.radioButton_8.setText(_translate("dialog", "关闭")) #逻辑执行类 class MyMainWindow(QDialog,Ui_dialog): def __init__(self, parent = None): super(MyMainWindow, self).__init__(parent) self.setupUi(self) # 连接槽函数 #self.radioButton_5.clicked.connect(self.gamedj) #定义新增槽函数ok def gamedj(self): print(“o'k” ) #设置内容测试 #定义调用函数 def setting_ui(): app = QApplication(sys.argv) win = MyMainWindow() win.show() app.exec() #新开线程 class setui_Thread(threading.Thread): def __init__(self): super(setui_Thread, self).__init__() def run(self): currentTreadname = threading.currentThread() #测试 print("set ui running in", currentTreadname) #测试 setting_ui() setui = setui_Thread() setui.setDaemon(daemonic=True) #调用线程或函数代码片 #检测鼠标点击是否在游戏设置 if ksyx3.textRect.collidepoint(mouse_x,mouse_y): if not ai_settings.game_set: ai_settings.game_set = True #setui.run() setui.start() ``` 请各位大神答疑,谢谢!
pyinstaller或cx_freeze打包pyqt5程序的问题
环境: python3.4.4 pyqt5 qt5.5.1 win10 x64 python写的pyqt5程序需要转换成exe,用cxfreeze打包可以正常运行,但是输出文件太大,就一个小的GUI程序就超过200m了,google也有一些说法总之就是很难办。 用pyinstaller打包以后程序体积比较小只有30来兆,但是又无法运行,点击exe提示fail to execute script ……也没提示更多信息,我查google说是要加入pyqt5的路径,但是我电脑PyQt5的文件夹没有网上说的qt\bin这个路径,我就直接加的“C:\Python34\Lib\site-packages\PyQt5”这个路径,打包出来能看到pyqt5的一些组件,但是exe还是无法运行。 ……总之cxfreeze体积太大,pyinstaller无法运行,不知道咋办了…… 感觉python作为一个比较成熟的东西,为什么在打包exe这么基础的功能上反而不成熟。
Python pyqt界面添加文件选择语句报错
我用qt Designer编写了框架,之后转化成了.py文件,我想添加一个按钮,能够选择一个文件(图片,文本等等),得到文件名及路径。 但是框架本身没有错误,但是添加了: filename = QtGui.QFileDialog.getOpenFileName(self, 'Open file', './') 这个语句后,就会报错误,错误如下: Traceback (most recent call last): File "C:\Users\lenovo\Desktop\leaf\Recognize\UI\src\myUI\Rec_ui.py", line 172, in path_click filename = QtGui.QFileDialog.getOpenFileName(self, 'Open file', './') TypeError: getOpenFileName(parent: QWidget = None, caption: QString = QString(), directory: QString = QString(), filter: QString = QString(), selectedFilter: QString = None, options: QFileDialog.Options = 0): argument 1 has unexpected type 'Ui_MainWindow' 现在我不知道怎么改了,请求各位大神援助
请教一些关于pyqt5的小白问题
如下代码所示,我想在一个Dialog的Qwidget里绘制一个矩形,但在发送信号调用DrawRec的时候并没有绘制出图形,但是把DrawRec放在paintEvent里就能绘制出来,难道Qwidget只能在paintEvent里绘制图形?还是因为我没能正确调用呢? ``` import sys from PyQt5.QtCore import pyqtSlot, pyqtSignal from PyQt5.QtWidgets import QApplication, QDialog,QWidget, QVBoxLayout from PyQt5.QtGui import QPainter, QColor, QBrush, QPen, QPalette class myWidget(QWidget): def __init__(self): super().__init__() self.setBackgroundRole(QPalette.Midlight) self.setAutoFillBackground(True) def paintEvent(self, e): # self.DrawRec(10, 10, 50, 50) pass @pyqtSlot(int, int, int, int) # 定义槽函数 def DrawRec(self, x1, y1, x2, y2): qp = QPainter() qp.begin(self) col = QColor(0, 0, 0) col.setNamedColor('#d4d4d4') qp.setPen(col) qp.setBrush(QColor(200, 0, 0)) qp.drawRect(x1, y1, x2, y2) qp.end() class Dialog(QDialog): _signal = pyqtSignal(int, int, int, int) # 定义信号 def __init__(self, parent=None): super(Dialog, self).__init__(parent) self.setObjectName("Dialog") self.resize(400, 300) self.setSizeGripEnabled(True) wigglyWidget = myWidget() layout = QVBoxLayout() layout.addWidget(wigglyWidget) self.setLayout(layout) self._signal.connect(wigglyWidget.DrawRec) # connect self._signal.emit(20, 20, 50, 50) # 信号发送 if __name__ == "__main__": app = QApplication(sys.argv) dlg = Dialog() dlg.show() sys.exit(app.exec_()) ```
pyqt5中QTabBarClicked怎么使用
有大佬知道pyqt5中 QTabBarClicked怎么使用吗?我没找到相关例子和文档。具体情况是我想点击一个Tab头实现隐藏它的QTabWidgit内容的功能。求高人指点思路。
Anaconda下如何离线安装Pyqt5 并使用PyQt designer?
Python新手(使用Anaconda学习中)求教各路大神: 1.因某些原因,电脑无法直接联网,需要离线安装各种软件、模块,请问Anaconda下如何离线安装Pyqt5 并使用PyQt designer,以实现GUI编程? 2.网上多为Anaconda+Pycharm+PyQt或Anaconda3 + PyQt5 + Eric6安装,请问Anaconda+PyQt下,Pycharm或Eric是必须的吗?Anacondat和Pycharm是什么关系?
请问这个pyqt界面转化为python程序的问题?
用pyqt界面设计转化为python代码 加入了slot响应函数 但是编译不过,编译问题在后面 这是怎么回事 # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'form111.ui' # # Created: Tue May 16 21:26:25 2017 # by: PyQt4 UI code generator 4.11.2 # # WARNING! All changes made in this file will be lost! import sys from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: def _fromUtf8(s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig) class Ui_Form(object): def setupUi(self, Form): Form.setObjectName(_fromUtf8("Form")) Form.resize(400, 300) self.pushButton = QtGui.QPushButton(Form) self.pushButton.setGeometry(QtCore.QRect(130, 30, 75, 23)) self.pushButton.setObjectName(_fromUtf8("pushButton")) self.textEdit = QtGui.QTextEdit(Form) self.textEdit.setGeometry(QtCore.QRect(40, 80, 281, 171)) self.textEdit.setObjectName(_fromUtf8("textEdit")) self.retranslateUi(Form) QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), Form.slot1) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): Form.setWindowTitle(_translate("Form", "Form", None)) self.pushButton.setText(_translate("Form", "Hello World", None)) def slot1(self): self.textEdit.setText('nihao') if __name__ == '__main__': app = QtGui.QApplication (sys.argv) Form=QtGui.QWidget () ui=Ui_Form() ui.setupUi (Form) Form.show() 编译出现问题 Traceback (most recent call last): File "D:\qttest\form222.py", line 56, in <module> ui.setupUi (Form) File "D:\qttest\form222.py", line 38, in setupUi QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), Form.slot1) AttributeError: 'QWidget' object has no attribute 'slot1'
eric6 pyqt5 怎么实现类似qq聊天窗口的合并
我最近在搞一个类似window上的qq聊天工具, 有几个问题想求教大神们!!! 用显示框显示上线人,那怎么实现显示宽可以点击,然后发出信号,弹出窗口, 还有就是,怎么实现窗口的合并! 求教大神啊!!!!
Kafka实战(三) - Kafka的自我修养与定位
Apache Kafka是消息引擎系统,也是一个分布式流处理平台(Distributed Streaming Platform) Kafka是LinkedIn公司内部孵化的项目。LinkedIn最开始有强烈的数据强实时处理方面的需求,其内部的诸多子系统要执行多种类型的数据处理与分析,主要包括业务系统和应用程序性能监控,以及用户行为数据处理等。 遇到的主要问题: 数据正确性不足 数据的收集主要...
volatile 与 synchronize 详解
Java支持多个线程同时访问一个对象或者对象的成员变量,由于每个线程可以拥有这个变量的拷贝(虽然对象以及成员变量分配的内存是在共享内存中的,但是每个执行的线程还是可以拥有一份拷贝,这样做的目的是加速程序的执行,这是现代多核处理器的一个显著特性),所以程序在执行过程中,一个线程看到的变量并不一定是最新的。 volatile 关键字volatile可以用来修饰字段(成员变量),就是告知程序任何对该变量...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
GitHub开源史上最大规模中文知识图谱
近日,一直致力于知识图谱研究的 OwnThink 平台在 Github 上开源了史上最大规模 1.4 亿中文知识图谱,其中数据是以(实体、属性、值),(实体、关系、实体)混合的形式组织,数据格式采用 csv 格式。 到目前为止,OwnThink 项目开放了对话机器人、知识图谱、语义理解、自然语言处理工具。知识图谱融合了两千五百多万的实体,拥有亿级别的实体属性关系,机器人采用了基于知识图谱的语义感...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
微信支付崩溃了,但是更让马化腾和张小龙崩溃的竟然是……
loonggg读完需要3分钟速读仅需1分钟事件还得还原到昨天晚上,10 月 29 日晚上 20:09-21:14 之间,微信支付发生故障,全国微信支付交易无法正常进行。然...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
YouTube排名第一的励志英文演讲《Dream(梦想)》
Idon’t know what that dream is that you have, I don't care how disappointing it might have been as you've been working toward that dream,but that dream that you’re holding in your mind, that it’s po...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
相关热词 c# clr dll c# 如何orm c# 固定大小的字符数组 c#框架设计 c# 删除数据库 c# 中文文字 图片转 c# 成员属性 接口 c#如何将程序封装 16进制负数转换 c# c#练手项目
立即提问