尝试为包含像素图的小部件添加滚动条,但看不到滚动条。
这是我的代码:-
import sys
from PyQt4 import QtGui, QtCore, Qt
class Canvas(QtGui.QWidget):
def __init__(self, *args, **kwargs):
super(Canvas, self).__init__()
self.pixmap = QtGui.QPixmap()
def paintEvent(self, event):
print 'paintevent'
painter = QtGui.QPainter(self)
# painter.scale(3,3)
# painter.translate(200, 200)
painter.drawPixmap(QtCore.QPoint(), self.pixmap)
class Window(QtGui.QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.setGeometry(50, 50, 500, 300)
self.setWindowTitle("PyQT tuts!")
self.setWindowIcon(QtGui.QIcon('pythonlogo.png'))
openFile = QtGui.QAction("Open File", self)
openFile.setShortcut("Ctrl+O")
openFile.setStatusTip('Open File')
openFile.triggered.connect(self.file_open)
zoomIn = QtGui.QAction("Zoom", self)
zoomIn.setShortcut("Ctrl+z")
zoomIn.setStatusTip('Open File')
zoomIn.triggered.connect(self.zoom_in)
self.scrollArea = QtGui.QScrollArea()
self.scrollBars = {
QtCore.Qt.Vertical: self.scrollArea.verticalScrollBar(),
QtCore.Qt.Horizontal: self.scrollArea.horizontalScrollBar(),
}
self.statusBar()
mainMenu = self.menuBar()
fileMenu = mainMenu.addMenu('&File')
fileMenu.addAction(openFile)
fileMenu.addAction(zoomIn)
self.canvas = Canvas()
self.scrollArea.setWidget(self.canvas)
self.scrollArea.setWidgetResizable(True)
self.setCentralWidget(self.scrollArea)
self.home()
self.resize(200, 200)
def home(self):
self.show()
def file_open(self):
name = QtGui.QFileDialog.getOpenFileName(self, 'Open File')
file = open(name,'r')
with file:
imageData = file.read()
image = QtGui.QImage.fromData(imageData)
print(image.isNull())
self.load_pixmap(image)
def load_pixmap(self, image):
self.canvas.pixmap = QtGui.QPixmap.fromImage(image)
def zoom_in(self):
print 'zoom in'
self.canvas.update()
print self.scrollArea
print self.scrollBars[QtCore.Qt.Horizontal].value()
self.scrollBars[QtCore.Qt.Horizontal].setValue(10)
print self.scrollBars[QtCore.Qt.Horizontal].value()
print self.scrollArea.horizontalScrollBarPolicy()
def run():
app = QtGui.QApplication(sys.argv)
GUI = Window()
sys.exit(app.exec_())
run()
答案 0 :(得分:0)
此链接将非常有用:http://doc.qt.io/archives/qt-4.8/qscrollarea.html
我的建议是:
默认情况下,在滚动区域中,滚动条仅在需要时显示。您是否尝试将滚动条策略设置为Qt.ScrollBarAlwaysOn
?