pyqt 學習基礎 實踐2 基於oschina筆記軟件的初步界面

筆記軟件主界面

這東西大概介紹

我想作一個基於oschina的跨平臺的筆記軟件(作得好就分享給你們,作的很差就本身收藏....,oschina openapi方面已經熟悉了一下,可是Qt還不是很熟悉,由於仍是學習中...),下面講我在用其餘的筆記軟件經常遇到如下幾個問題:python

  1. 不跨平臺,由於不少像我這種僞程序猿都會在window和linux或者mac之間切換,像onenote就只能在windows上運行, 還有印象筆記的linux客戶端也不甚理想。不過近期發現的爲知筆記的確是個不錯的選擇
  2. 做爲一個筆記軟件,我以爲要具備一些好比像 桌面便籤日曆提醒等一些人性化的功能,暫時以爲只有爲之筆記的windows客戶端能獲得這個要求
  3. 其次,咱們也有許多筆記能夠跟你們一塊兒分享,這些筆記軟件雖然具備分享功能,可是通常人都沒用到,由於他沒有一個公認的平臺。若是是基於oschina的話,咱們就能夠經過公開的博客來進行分享。另外oschina也能夠設置私人博客,這對於一些私人筆記也是能夠很好的保護。
  • 因此我以爲這個想法貌似仍是可行
  • 由於側重點在筆記,因此這個東西前期確定會忽略一些oschina上的新聞、諮詢、動彈什麼的,後期的話,就要看具體狀況慢慢加入

目標的基本功能大體:linux

  • 跨平臺
  1. 具備寫博客(公開),寫日記(私人),平常任務計劃(體現爲便籤)
  2. 具備本身的編輯器(總不能一個編輯器都沒有,而後去寫東西。其次,這樣界面風格好統一)(最好有預覽功能)
  3. 具備相似鬧鐘這種提醒的功能。
  4. 界面儘可能美觀,能設置幾種不一樣的風格

擺在眼前的困難

  1. 寫博客就須要一個編輯器(打算先實現markdown編輯),以前據說用webview blabla作編輯器,不過我對這個不怎麼清楚,絲毫沒經驗,。也看到一些開源的基於Qt的markdown編輯器,暫時還沒精力去看,因此這是個難點,也是現階段的重點。若是有哪位大神能夠提供幫助(我水平較低),那就更好了。

計劃

  1. 我想先用代碼把界面作出來,而後對代碼進行組織和優化
  2. 接着進行一些技術上的攻關(像編輯器這種東西)
  3. 而後把界面和後端聯繫起來
  4. 就快開學了。。。有些東西說很差。。。

代碼

<!-- lang: python -->
# -*- coding:utf8 -*-

from PyQt4 import QtCore, QtGui
from PyQt4.QtCore import *
from PyQt4.QtGui import *

import mainQss

class mainUi(QWidget):
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)

        #self.shadow = QGraphicsDropShadowEffect(self)
        #self.shadow.setBlurRadius(15)
        #self.shadow.setColor(QColor("blue"))
        #self.shadow.setOffset(20, 20)
        #self.setGraphicsEffect(self.shadow)

        
        self.setWindowFlags(Qt.FramelessWindowHint)
        self.layout = QHBoxLayout(self)

        self.leftwidget = QWidget()
        self.centerwidget = QWidget()
        self.rightwidget = QWidget()
        self.leftwidget.setMaximumWidth(300)
        self.leftwidget.setMinimumWidth(200)
        self.leftwidget.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) # growflag
        self.centerwidget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) # growflag
        self.rightwidget.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) # growflag
        self.centerwidget.setMinimumWidth(550)
        self.rightwidget.setMinimumWidth(250)
        self.rightwidget.setMaximumWidth(300)
        

        self.leftwidget.setStyleSheet(mainQss.threeWidget)
        self.centerwidget.setStyleSheet(mainQss.threeWidget)
        self.rightwidget.setStyleSheet(mainQss.threeWidget)

        headLabel = QLabel(self.rightwidget)
        headLabel.setStyleSheet(mainQss.headLabel)
        headLabel.setGeometry(25, 50, 80, 80)

        blogButton = QPushButton(u'個人博客',self.rightwidget)
        blogButton.setStyleSheet(mainQss.textButton)
        blogButton.setGeometry(25, 180, 150, 30)
        blogWriteButton = QPushButton(self.rightwidget)
        blogWriteButton.setStyleSheet(mainQss.writeButton)
        blogWriteButton.setGeometry(180, 182, 24, 24)
    
        noteButton = QPushButton(u'平常筆記',self.rightwidget)
        noteButton.setStyleSheet(mainQss.textButton)
        noteButton.setGeometry(25, 220, 150, 30)
        noteWriteButton = QPushButton(self.rightwidget)
        noteWriteButton.setStyleSheet(mainQss.writeButton)
        noteWriteButton.setGeometry(180, 222, 24, 24)

        taskButton = QPushButton(u'今日任務',self.rightwidget)
        taskButton.setStyleSheet(mainQss.textButton)
        taskButton.setGeometry(25, 260, 150, 30) 
        taskWriteButton = QPushButton(self.rightwidget)
        taskWriteButton.setStyleSheet(mainQss.writeButton)
        taskWriteButton.setGeometry(180, 262, 24, 24) 

        self.btnClose = QPushButton(self.leftwidget)
        self.btnMini = QPushButton(self.leftwidget)
        self.btnMax = QPushButton(self.leftwidget)
        self.btnClose.setGeometry(5, 5, 24, 24)
        self.btnMini.setGeometry(64, 5, 24, 24)
        self.btnMax.setGeometry(35, 5, 24, 24)
        self.btnClose.setStyleSheet(mainQss.btn_close)
        self.btnMini.setStyleSheet(mainQss.btn_mini)
        self.btnMax.setStyleSheet(mainQss.btn_max)

        self.leftLayout = QVBoxLayout()
        self.centerLayout = QVBoxLayout()
        self.rightLayout = QVBoxLayout()
        
        self.leftLayout.addWidget(self.leftwidget)
        self.centerLayout.addWidget(self.centerwidget)
        self.rightLayout.addWidget(self.rightwidget)

        self.layout.addLayout(self.leftLayout)
        self.layout.addLayout(self.centerLayout)
        self.layout.addLayout(self.rightLayout)

        self.maxToNor = False 
       
        self.layout.setContentsMargins(0,0,0,0)
        self.layout.setSpacing(0)
        self.setLayout(self.layout)
        self.setWindowOpacity(0.95)
        self.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Ignored)
        self.resize(1000, 600)

        
        
        self.connect(self.btnClose, SIGNAL("clicked()"), QtGui.qApp, \
                SLOT("quit()"))
        self.connect(self.btnMini, SIGNAL("clicked()"),self.showMinimized)
        self.connect(self.btnMax, SIGNAL("clicked()"),self.showMaxNor)
    
    def showMaxNor(self):
        if self.maxToNor:
            self.showNormal()
            self.maxToNor = False
        else:
            self.showMaximized()
            self.maxToNor = True

    def mousePressEvent(self, event):
        if self.isMaximized():
            return 
        if event.button() == Qt.LeftButton:
            self.dragPos = event.globalPos() - self.pos()
            event.accept()

    def mouseMoveEvent(self, QMouseEvent):
        if self.isMaximized():
            return
        if QMouseEvent.buttons() and Qt.LeftButton:
            self.move(QMouseEvent.globalPos() - self.dragPos)
            QMouseEvent.accept()

    def mouseReleaseEvent(self, QMouseEvent):
        pass

    


if __name__ == "__main__":
    import sys

    app = QApplication(sys.argv)
    mu = mainUi()

代碼2

<!-- lang: python -->
# -*- coding:utf8 -*-

btn_close = '''
    QPushButton{
        background-image: url(./img/close.png);
        border-radius: 1px;
    }
    QPushButton:hover{
        background-image: url(./img/closeHover.png);
    }
'''

btn_mini = '''
    QPushButton{
        background-image: url(./img/mini.png);
        border-radius: 1px;
    }
    QPushButton:Hover{
        background-image: url(./img/miniHover.png)
    }
'''
btn_max = '''
    QPushButton{
        background-image: url(./img/max.png);
        border-radius: 1px;
    }
    QPushButton:Hover{
        background-image: url(./img/maxHover.png)
    }
'''

headLabel = '''
    QLabel{
        background-color: #FFCCCC;
        border-radius: 4px;
        }

'''

textButton = '''
    QPushButton{
        text-align: left;
        color: white;
        font: 20px "Times New Roman";
        border-radius: 4px;
        }
    QPushButton:Hover{
        color: #D6432D; 
        }

'''

writeButton = '''
    QPushButton{
        background-image: url(./img/blogWrite.png);
        border-radius: 4px;
        }
    QPushButton:Hover{
        background-image: url(./img/blogWriteHover.png);
        }
'''

threeWidget = '''
    QWidget{
        background-color: #222222;
        border-radius: 0px;
        }

'''

效果圖

在此輸入圖片描述 在此輸入圖片描述

相關文章
相關標籤/搜索